我必须使用本地Spark连接具有身份验证的远程配置单元。
我可以通过Beeline进行连接。
直线>!connect jdbc:hive2:// bigdatamr:10000 / default 连接到jdbc:hive2:// bigdatamr:10000 / default 输入jdbc:hive2:// bigdatamr:10000 / default的用户名:myusername 输入jdbc:hive2:// bigdatamr:10000 /默认的密码:******** 已连接到:Apache Hive(版本1.2.0-mapr-1703) 驱动程序:Hive JDBC(版本1.2.0-mapr-1703) 事务隔离:TRANSACTION_REPEATABLE_READ
如何将其转换为使用spark? 我尝试过节俭和jdbc,但都无法正常工作
我的尝试,不知道如何通过身份验证
from pyspark.sql import SparkSession
spark = SparkSession\
.builder.master("yarn")\
.appName("my app")\
.config("hive.metastore.uris", "thrift://bigdatamr:10000")\
.enableHiveSupport()\
.getOrCreate()
我的jdbc尝试不支持throw方法
jdbcDF = spark.read \
.format("jdbc") \
.option("url", "jdbc:hive2://bigdatamr:10000") \
.option("dbtable", "default.tmp") \
.option("user", "myusername") \
.option("password", "xxxxxxx") \
.load()
Py4JJavaError: An error occurred while calling o183.load.
:java.sql.SQLException:不支持的方法
答案 0 :(得分:0)
您需要在spark.read
的选项中指定要使用的驱动程序:
.option("driver", "org.apache.hive.jdbc.HiveDriver")
此外,由于某种原因,您必须在jdbc url中指定数据库,并使用选项dbTable
指定表的名称。由于某些原因,仅将dbTable
定义为database.table
是行不通的。
它看起来像这样:
jdbcDF = spark.read \
.format("jdbc") \
.option("driver", "org.apache.hive.jdbc.HiveDriver") \
.option("url", "jdbc:hive2://bigdatamr:10000/default")
.option("dbtable", "tmp") \
.option("user", "myusername") \
.option("password", "xxxxxxx") \
.load()
答案 1 :(得分:0)
显然,此问题是配置问题。
如果您有权访问服务器/PATH/TO/HIVE/hive-site.xml
文件,请将其复制到本地Spark配置文件夹/PATH/TO/SPARK/conf/
,然后重试运行应用程序