我正在尝试使用Pyspark在hive中创建一个表。该表已成功创建,但不是PARQUET格式。我已经创建了一个示例数据集来重新创建我的问题。
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, HiveContext
conf = (SparkConf()
.setAppName("wrting_to_hive_table"))
sc = SparkContext(conf=conf)
sqlContext = HiveContext(sc)
columns = ['id', 'dogs', 'cats']
vals1 = [
(1, 2, 0),
(2, 0, 1)
]
vals2 = [
(3, 6, 0),
(4, 4, 2)
]
df1 = sqlContext.createDataFrame(vals1, columns)
df2 = sqlContext.createDataFrame(vals2, columns)
df1.write.saveAsTable("test1")
df2.write.saveAsTable("test2")
create_hive_table = 'CREATE TABLE df_final STORED AS PARQUET AS ' \
'SELECT * FROM test1 ' \
'UNION ' \
'SELECT * FROM test2'
sqlContext.sql(create_hive_table)
表'test1'和'test2'以PARQUET格式存储在文件夹(“C:\ spark-warehouse \ test1)&(”C:\ spark-warehouse \ test2)下但如果我查看文件夹“C:\ spark-warehouse \ df_final \”,文件没有“PARQUET”扩展名,文件类型只是“file”。如何强制HIVE创建表格并以PARQUET格式存储。
我不想使用spark数据帧进行UNION并将其加载到HIVE表中,因为实际上我的数据集大约有几百GB,并且它不适合内存。