參考以下案例使用Hive表完成雇員記錄。 所有記錄的數(shù)據(jù)都在名為employee.txt的文本文件中。 這里,我們將首先初始化HiveContext對(duì)象。 使用它,我們將創(chuàng)建一個(gè)表,使用HiveQL語(yǔ)言將雇員記錄數(shù)據(jù)加載到其中,并對(duì)其應(yīng)用一些查詢(xún)。
employee.txt - 將其放在spark-shell正在運(yùn)行的當(dāng)前目錄中。
1201, satish, 25 1202, krishna, 28 1203, amith, 39 1204, javed, 23 1205, prudvi, 23啟動(dòng)Spark Shell
$ su password: #spark-shell scala>
使用以下命令將HiveContext初始化到Spark Shell中。
scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
使用以下命令創(chuàng)建名為employee的表,其字段為id,name和age。這里,我們使用HiveQL語(yǔ)法的Create語(yǔ)句。
scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")
使用以下命令將員工記錄數(shù)據(jù)加載到員工表中。如果成功執(zhí)行,給定的員工記錄將按照模式存儲(chǔ)在 employee 中。
scala> sqlContext.sql("LOAD DATA LOCAL INPATH 'employee.txt' INTO TABLE employee")
我們可以在表中執(zhí)行任何類(lèi)型的SQL查詢(xún)。使用以下命令可以使用HiveQL select查詢(xún)獲取所有記錄。
scala> val result = sqlContext.sql("FROM employee SELECT id, name, age")要顯示記錄數(shù)據(jù),請(qǐng)對(duì)結(jié)果DataFrame調(diào)用show()方法。
scala> result.show()
輸出
<console>:26, took 0.157137 s +------+---------+----+ | id | name |age | +------+---------+----+ | 1201 | Satish | 25 | | 1202 | Krishna | 28 | | 1203 | amith | 39 | | 1204 | javed | 23 | | 1205 | prudvi | 23 | +------+---------+----+
更多建議: