【问题标题】:pyspark returning all rows with column names when using jdbcpyspark 在使用 jdbc 时返回所有具有列名的行
【发布时间】: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


【解决方案1】:

我的spark其实没有正确配置,正确配置后表都可以直接读取,不需要使用jdbc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 2021-04-24
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    相关资源
    最近更新 更多