通过执行UNION创建配置单元表不会将表存储为pyspark

时间:2018-06-12 00:47:20

标签: apache-spark hive pyspark apache-spark-sql pyspark-sql

我正在尝试使用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,并且它不适合内存。

0 个答案:

没有答案