您好,登錄后才能下訂單哦!
實驗環境: linux centOS 6.7 vmware虛擬機
spark-1.5.1-bin-hadoop-2.1.0
apache-hive-1.2.1
eclipse 或IntelJIDea 本次使用eclipse.
代碼:
import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.hive.HiveContext; public class SparkOnHiveDemo { public static void main(String[] args) { // 首先還是創建SparkConf SparkConf conf = new SparkConf().setAppName("HiveDataSource"); // 創建JavaSparkContext JavaSparkContext sc = new JavaSparkContext(conf); // 創建HiveContext,注意,這里,它接收的是SparkContext作為參數,不是JavaSparkContext HiveContext hiveContext = new HiveContext(sc.sc()); //1.可以使用HiveContext 下面的sql(xxx語句)執行HiveSQL語句 //1 .刪除表,創建表 // stars_infos ,stars_scores hiveContext.sql("DROP TABLE IF EXISTS stars_infos"); hiveContext.sql("CREATE TABLE IF NOT EXISTS stars_infos(name STRING,age INT) " + "row format delimited fields terminated by ','"); //2.向表里面導入數據 hiveContext.sql("LOAD DATA " + "LOCAL INPATH " + "'/root/book/stars_infos.txt' " + "INTO TABLE stars_infos"); hiveContext.sql("DROP TABLE IF EXISTS stars_scores"); hiveContext.sql("CREATE TABLE IF NOT EXISTS stars_scores(name STRING,score INT) " + "row format delimited fields terminated by ','"); hiveContext.sql("LOAD DATA " + "LOCAL INPATH " + "'/root/book/stars_score.txt' " + "INTO TABLE stars_scores"); //3.從一張已經存在的hive表里面拿數據,轉換為DF DataFrame superStarDataFrame = hiveContext.sql("SELECT si.name,si.age,ss.score " + "FROM stars_infos si " + "JOIN stars_scores ss ON si.name=ss.name " + "WHERE ss.score>=90"); //4.把DF的數據再持久化到hive中去,千萬別和registerTemtable搞混了 hiveContext.sql("DROP TABLE IF EXISTS superStar"); superStarDataFrame.saveAsTable("superStar"); //5.直接從Hive中得到DF hiveContext.table("superStar").show(); sc.close(); } }
元數據:
可以下載附件,然后上傳到指定的目錄下。
把程序打包jar后上傳到linux指定的目錄下,寫一個腳本。腳本附件見正文。具體內容修改即可。
運行腳本就可以了。當然要保證MySQL數據庫正常,hive正常。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。