實(shí)驗(yàn)環(huán)境: linux centOS 6.7 vmware虛擬機(jī)
創(chuàng)新互聯(lián)公司專(zhuān)注于網(wǎng)站建設(shè),為客戶(hù)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)開(kāi)發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類(lèi)網(wǎng)站都可以開(kāi)發(fā),品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢(qián),價(jià)格優(yōu)惠,收費(fèi)合理。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) { // 首先還是創(chuàng)建SparkConf SparkConf conf = new SparkConf().setAppName("HiveDataSource"); // 創(chuàng)建JavaSparkContext JavaSparkContext sc = new JavaSparkContext(conf); // 創(chuàng)建HiveContext,注意,這里,它接收的是SparkContext作為參數(shù),不是JavaSparkContext HiveContext hiveContext = new HiveContext(sc.sc()); //1.可以使用HiveContext 下面的sql(xxx語(yǔ)句)執(zhí)行HiveSQL語(yǔ)句 //1 .刪除表,創(chuàng)建表 // 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.向表里面導(dǎo)入數(shù)據(jù) 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.從一張已經(jīng)存在的hive表里面拿數(shù)據(jù),轉(zhuǎn)換為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的數(shù)據(jù)再持久化到hive中去,千萬(wàn)別和registerTemtable搞混了 hiveContext.sql("DROP TABLE IF EXISTS superStar"); superStarDataFrame.saveAsTable("superStar"); //5.直接從Hive中得到DF hiveContext.table("superStar").show(); sc.close(); } }
元數(shù)據(jù):
可以下載附件,然后上傳到指定的目錄下。
把程序打包jar后上傳到linux指定的目錄下,寫(xiě)一個(gè)腳本。腳本附件見(jiàn)正文。具體內(nèi)容修改即可。
運(yùn)行腳本就可以了。當(dāng)然要保證MySQL數(shù)據(jù)庫(kù)正常,hive正常。
附件:http://down.51cto.com/data/2366931另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。