永发信息网

spark从hive数据仓库中读取的数据可以使用sparksql进行查询吗

答案:1  悬赏:10  手机版
解决时间 2021-02-08 00:49
spark从hive数据仓库中读取的数据可以使用sparksql进行查询吗
最佳答案
1、为了让Spark能够连接到Hive的原有数据仓库,我们需要将Hive中的hive-site.xml文件拷贝到Spark的conf目录下,这样就可以通过这个配置文件找到Hive的元数据以及数据存放。
在这里由于我的Spark是自动安装和部署的,因此需要知道CDH将hive-site.xml放在哪里。经过摸索。该文件默认所在的路径是:/etc/hive/conf 下。
同理,spark的conf也是在/etc/spark/conf。
此时,如上所述,将对应的hive-site.xml拷贝到spark/conf目录下即可
如果Hive的元数据存放在Mysql中,我们还需要准备好Mysql相关驱动,比如:mysql-connector-java-5.1.22-bin.jar。
2、编写测试代码
val conf=new SparkConf().setAppName("Spark-Hive").setMaster("local")
val sc=new SparkContext(conf)

//create hivecontext
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

sqlContext.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ") //这里需要注意数据的间隔符

sqlContext.sql("LOAD DATA INPATH '/user/liujiyu/spark/kv1.txt' INTO TABLE src ");

sqlContext.sql(" SELECt * FROM jn1").collect().foreach(println)

sc.stop()

3、下面列举一下出现的问题:
(1)如果没有将hive-site.xml拷贝到spark/conf目录下,会出现:

分析:从错误提示上面就知道,spark无法知道hive的元数据的位置,所以就无法实例化对应的client。
解决的办法就是必须将hive-site.xml拷贝到spark/conf目录下
(2)测试代码中没有加sc.stop会出现如下错误:
ERROR scheduler.LiveListenerBus: Listener EventLoggingListener threw an exception
java.lang.reflect.InvocationTargetException
在代码最后一行添加sc.stop()解决了该问题。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我问自己的老板借了钱,老板说担心我跑了,说要
墨玉县民政局婚姻登记处地址在什么地方,想过
难找一半,却很好看,猜一字
没有暂住证牌照上不了,现在上牌都需要什么,
人民代表大会制度的组织和活动原则是A. 公民
写我家乡的作文(原平)150字
63 CLUB我想知道这个在什么地方
澳大利亚north narrabeen属于哪个州
测定痕量水分食品中的水分含量的方法是()
浸润性肺腺癌怎么分期
高地峰怎么去啊,有知道地址的么
我来贷app有人用过吗怎么才能取消啊我的显示
同官步行商业街地址在哪,我要去那里办事
关于PCB原材料TG值
艺新农贸市场我想知道这个在什么地方
推荐资讯
为什么我不相信命,却觉得自己命不好呢?
花鸟市场里有卖仓鼠用品吗?
申通快递9天没动地方怎么办
西瓜种植过程中,既经济又科学的施肥方法是A.
财政部门代表国家对单位和单位中相关人员的会
数学奥数题由1、2、3、4、5、6这六个数字可以
红外半球监控器能听到说话吗?
新港澳通行证电子卡的相片被刮擦了一点点,还
【壶口旅游】壶口瀑布对旅游者产生吸引力的最
厨壹堂在什么地方啊,我要过去处理事情
下图中.甲.乙.丙.丁表示四条著名山脉.读图,完
我们的学习用品很丰富小学作文三年级
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?