我正在尝试使用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“扩展名,文件类型只是说”文件“ . 如何强制HIVE创建表并以PARQUET格式存储它 .
我不想用spark数据帧做一个UNION并将它加载到HIVE表中,因为实际上我的数据集大约有几百GB而且它不适合内存 .