【发布时间】:2022-01-08 16:33:16
【问题描述】:
我是 spark 新手,目前我正在使用从远程服务器连接的 hive 数据库。我遵循了许多关于如何将 spark 连接到 hive jdbc 的示例,但工作并不多。一个可行的配置是使用下面的配置,但是当将表提取到 spark 数据帧中时,行值是列名。我的查询或 Spark 配置有问题吗?
from pyspark import SparkContext, SparkConf
from pyspark.sql import HiveContext, SparkSession
spark = SparkSession \
.builder \
.master('yarn') \
.appName('Connect-to-Hive') \
.config('spark.dynamicAllocation.enabled', 'false') \
.config('parquet.compression', 'SNAPPY') \
.enableHiveSupport() \
.getOrCreate()
sqlsUrl = 'jdbc:hive2://{username}@{}:10000/{database}'
qryStr = """(SELECT * FROM table_name) as t"""
df_channel = spark.read.format('jdbc')\
.option('url',sqlsUrl)\
.option('dbtable', qryStr )\
.option("user", "{username}") \
.option("password", "{passw}") \
.option('UseNativeQuery', 1)\
.load()
【问题讨论】:
-
您在创建 sparksession 时正在使用 enablehivesupport,所以您是否可以尝试查看是否可以在不使用 jdbc 的情况下查看 hive 数据库中的表
spark.catalog.listTables().show()。这是否显示了您尝试查询的表? -
你能举个例子吗?你的代码看起来不错。你在做什么来可视化你的数据?
标签: python apache-spark pyspark hive