当前位置:  开发笔记 > 编程语言 > 正文

SparkSession通过JDBC通过HiveServer2连接不返回任何内容

如何解决《SparkSession通过JDBC通过HiveServer2连接不返回任何内容》经验,为你挑选了0个好方法。

我有一个关于在Apache Zeppelin中使用JDBC和SparkSession从远程HiveServer2读取数据的问题。

这是代码。

%spark

import org.apache.spark.sql.Row
import org.apache.spark.sql.SparkSession

val prop = new java.util.Properties
prop.setProperty("user","hive")
prop.setProperty("password","hive")
prop.setProperty("driver", "org.apache.hive.jdbc.HiveDriver")

val test = spark.read.jdbc("jdbc:hive2://xxx.xxx.xxx.xxx:10000/", "tests.hello_world", prop)

test.select("*").show()

当我运行它时,我没有错误,但是也没有数据,我只是检索表的所有列名,如下所示:

+--------------+
|hello_world.hw|
+--------------+
+--------------+

代替这个:

+--------------+
|hello_world.hw|
+--------------+
+ data_here    +
+--------------+

我正在所有这些上运行:Scala 2.11.8,OpenJDK 8,Zeppelin 0.7.0,Spark 2.1.0(bde / spark),Hive 2.1.1(bde / hive)

我在Docker中运行此安装程序,每个安装程序都有自己的容器,但连接在同一网络中。

此外,它仅在我使用Spark Beeeline连接到我的远程Hive时有效。

我忘了什么吗?任何帮助,将不胜感激。提前致谢。

编辑:

我找到了一种解决方法,即在Spark和Hive之间共享docker卷或docker数据容器,更确切地说是在两者之间共享Hive仓库文件夹,并配置spark-defaults.conf。然后,您可以在没有JDBC的情况下通过SparkSession访问配置单元。这是逐步的方法:

    在Spark和Hive之间共享Hive仓库文件夹

    像这样配置spark-defaults.conf:

    spark.serializer     org.apache.spark.serializer.KryoSerializer
    
    spark.driver.memory              Xg
    
    spark.driver.cores       X
    
    spark.executor.memory        Xg
    
    spark.executor.cores         X
    
    spark.sql.warehouse.dir         file:///your/path/here
    

将“ X”替换为您的值。

希望能帮助到你。

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有