使用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是空的。
1条答案
按热度按时间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")