spark sql在读取配置单元托管表时返回空Dataframe

9vw9lbht  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(521)

使用hdp3.1中的spark2.4和hive3.1.0,我尝试使用sparksql从配置单元读取托管表,但它返回一个空Dataframe,同时它可以轻松地读取外部表。如何通过sparksql从配置单元读取托管表?
注意:使用配置单元客户端读取配置单元maanged表时,它不是空的。
1-我试图用 parquet 制作table,但都失败了。
2-我没能用硬件读出来。
3-我在使用jdbc时没有读到它。

os.environ["HADOOP_USER_NAME"] = 'hdfs'

spark = SparkSession\
    .builder\
    .appName('NHIC')\
    .config('spark.sql.warehouse.dir', 'hdfs://192.168.1.65:50070/user/hive/warehouse')\
    .config("hive.metastore.uris", "thrift://192.168.1.66:9083")\
    .enableHiveSupport()\
    .getOrCreate()

HiveTableName ='nhic_poc.nhic_data_sample_formatted'
data = spark.sql('select * from '+HiveTableName)

预期的是返回带有数据的dataframe,但实际上dataframe是空的。

okxuctiv

okxuctiv1#

你能检查一下你的spark环境是否配置过度了吗?
通过从代码中删除以下行,尝试使用环境的默认配置运行代码: os.environ["HADOOP_USER_NAME"] = 'hdfs' .config('spark.sql.warehouse.dir', 'hdfs://192.168.1.65:50070/user/hive/warehouse') .config("hive.metastore.uris", "thrift://192.168.1.66:9083")

相关问题