将Parquet文件加载到作为Parquet失败存储的Hive表中(值是null)

时间:2019-10-02 19:38:57

标签: apache-spark hadoop hive pyspark impala

我只是试图在配置单元中创建一个存储为镶木地板文件的表,然后将保存数据的csv文件转换为镶木地板文件,然后将其加载到hdfs目录中以插入值。是我正在执行的序列,但无济于事:

首先,我在Hive中创建了一个表:

CREATE external table  if not EXISTS db1.managed_table55 (dummy string)
stored as parquet
location '/hadoop/db1/managed_table55';

然后我使用此火花将镶木地板文件加载到上述hdfs位置:

df=spark.read.csv("/user/use_this.csv", header='true')
df.write.save('/hadoop/db1/managed_table55/test.parquet', format="parquet")

它已加载,但输出如下……所有空值: enter image description here

这是我转换为镶木地板文件的use_this.csv文件中的原始值: enter image description here

这证明指定的位置创建了表的文件夹(managed_table55)和文件(test.parquet): enter image description here

enter image description here

任何想法或建议为何会持续发生?我知道可能有一个小的调整,但我似乎无法识别。

1 个答案:

答案 0 :(得分:2)

将镶木地板文件写入/hadoop/db1/managed_table55/test.parquet时,请尝试在同一位置创建表并从配置单元表中读取数据。

Create Hive Table:

hive> CREATE external table  if not EXISTS db1.managed_table55 (dummy string)
stored as parquet
location '/hadoop/db1/managed_table55/test.parquet';

Pyspark:

df=spark.read.csv("/user/use_this.csv", header='true')
df.write.save('/hadoop/db1/managed_table55/test.parquet', format="parquet")