1. 程式人生 > >通過Spark SQL關聯查詢兩個HDFS上的檔案操作

通過Spark SQL關聯查詢兩個HDFS上的檔案操作

order_created.txt   訂單編號  訂單建立時間

10703007267488  2014-05-01 06:01:12.334+01
10101043505096  2014-05-01 07:28:12.342+01
10103043509747  2014-05-01 07:50:12.33+01
10103043501575  2014-05-01 09:27:12.33+01
10104043514061  2014-05-01 09:03:12.324+01

order_picked.txt   訂單編號  訂單提取時間

10703007267488  2014-05-01 07:02:12.334+01
10101043505096  2014-05-01 08:29
:12.342+01 10103043509747 2014-05-01 10:55:12.33+01

上傳上述兩個檔案到HDFS:

hadoop fs -put order_created.txt /data/order_created.txt
hadoop fs -put order_picked.txt /data/order_picked.txt

通過Spark SQL關聯查詢兩個檔案

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
import hiveContext._

case class OrderCreated(order_no:String,create_date:String)
case class OrderPicked(order_no:String,picked_date:String) val order_created = sc.textFile("/data/order_created.txt").map(_.split("\t")).map( d => OrderCreated(d(0),d(1))) val order_picked = sc.textFile("/data/order_picked.txt").map(_.split("\t")).map( d => OrderPicked(d(0),d(1))) order_created.registerTempTable(
"t_order_created") order_picked.registerTempTable("t_order_picked") #手工設定Spark SQL task個數 hiveContext.setConf("spark.sql.shuffle.partitions","10") hiveContext.sql("select a.order_no, a.create_date, b.picked_date from t_order_created a join t_order_picked b on a.order_no = b.order_no").collect.foreach(println)

執行結果如下:

[10101043505096,2014-05-01 07:28:12.342+01,2014-05-01 08:29:12.342+01]
[10703007267488,2014-05-01 06:01:12.334+01,2014-05-01 07:02:12.334+01]
[10103043509747,2014-05-01 07:50:12.33+01,2014-05-01 10:55:12.33+01]

相關推薦

通過Spark SQL關聯查詢HDFS檔案操作

order_created.txt   訂單編號  訂單建立時間 10703007267488 2014-05-01 06:01:12.334+01 10101043505096 2014-05-01 07:28:12.342+01 10103043509747 2014-05-01 07:5

使用一條sql語句查詢表的某個欄位為某個值時

使用一條sql語句查詢這兩個表的分數相同的人的名字(使用聯合查詢)    create table a( id int(10), score int(3), name varchar(20), )charset utf8; create table

通過spark sqlhdfs上文件導入到mongodb

通過 str nts mongod modify 運行 end tar and 功能:通過spark sql 將hdfs 中文件導入到mongdo 所需jar包有:mongo-spark-connector_2.11-2.1.2.jar、mongo-java-driver-

如何用一條SQL語句刪除關聯表的記錄?

有兩個表:group_file和teach_classroom,其中的group_file.group_id和teach_classroom.classroom_id對應唯一 一條語句刪除兩個表的內容: select a.*,b.classroom_namefrom group_file a,t

sql查詢不同資料庫中相同表

SELECT * FROM db_beifang.dbo.tb_Users a where idcard not in (select idcard from bfrc.dbo.tb_users )

防止通過POST和GET方法SQL注入的最徹底過濾程式

先針對POST遞交上來的資訊過濾程式 Public Function filterStr(str)    str=replace(str,CHR(59),";") '“;”    str=replace(str,CHR(38),"&") '“&”  

SQL--查詢欄位相同的記錄

1.如下,查詢order_id和loan_lind兩個欄位相同的記錄 select distinct a.order_preview_id, a.order_id, a.loan_kind from ddk_order_preview_info a join ddk_o

mysql 查詢 表中不同字段的 和,並通過表的時間來分組

mysql data new 字段 class 兩張 time sele group ( SELECT sum( a.cost_sum ) AS sum_cost, sum( a.phone_sum ) AS sum_phone, s

SQL Server 獲取日期間的日期

() serve server cts where sele sel lar obj declare @start datetime declare @end datetime set @start = ‘2018-01-25‘ set @end = ‘201

13、網絡--實驗一(通過網橋連接namespace)

linux network hostman 1) 建立橋接 2) 建立namespace 3) 建立虛擬vnet_pair 4) vnet_pair一端加入網橋 5) vnet_pair另一端加入namespace 6) 通信測試 可以發現端口已經up 可以發現兩個名字空間中的網卡無法通

sql關聯查詢使用別名報錯

from exc 修改 SQ 現在 發現 關聯查詢 not 別名 我有兩個關聯表: student{ id, class_id, name, age, comment } class{ id, name, g

同張表中同時查詢字段顯示一個字段,對字段進行按時間排序

principal mount sel con AC code rom inter nbsp select b.bid_name as bidName,bd.repayment_way as depict,r.exact_repayment_time as time, r

sql server 計算時間 相差的 幾天幾時幾分幾秒

var cas edi ediff date art star start har CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR

查詢單詞連結串列共同字尾的起始結點

描述 假定採用帶頭結點的單鏈表儲存單詞,當兩個單詞有相同的字尾時,則可共享相同的字尾空間。例如,“loading”和“being”的儲存映像如下圖所示: 設str1和str2分別指向兩個單詞所在單鏈表的頭結點,請實現一個時間上儘可能高效的演算法,找出由str1和str2所指的兩個連結串列

SQL關聯查詢 直接join 和子查詢的區別

SQL語句執行的時候是有一定順序的。 1.from先選擇一個表,構成一個結果集。 2.where對結果集進行篩選,篩選出需要的資訊形成新的結果集。 3.group by對新的結果集分組。 4.having篩選出想要的分組。 5.select選擇列。 6.order by當所有的條件都弄完了。最後排

SQL關聯查詢 直接join 和子查詢的區別

proc 認證 ado con pan exp type rip 圖片 SQL語句執行的時候是有一定順序的。 1.from先選擇一個表,構成一個結果集。 2.where對結果集進行篩選,篩選出需要的信息形成新的結果集。 3.group by對新的結果集分組。 4.havin

深思通過異或運算交換變數

平常程式設計的時候交換兩個數的需求很常見,比如說氣泡排序裡面的位置交換,我們一般都會使用下面這種方法: public void swap(int a, int b){ int temp = a; a = b; b = temp; } 最近右發現一個抖機靈的方法,看著逼格很

mysql自帶函式st_distance查詢經緯度點的距離

SELECT s.id,s.name,s.lng,s.lat, (st_distance (point (lng, lat),point(115.067,34.76) ) / 0.0111) AS distance FROM road_servicearea s HAVING dist

用一句sql語句更新表並可更新對應的欄位的值

ACCESS 例子: insert into products (ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai) select ProNumber,CASNumber,Cnname,Price,Enname,Baozhuan

mysql的DateDiff函式查詢日期的差的函式用於算日期的差距

例子 <!-- 查詢開標時間在的當天內的招標專案--> <select id="queryBidopenToday" resultMap="BaseResultMap" > select <include refid="Base_Column_List" /