python将pandas数据转为spark的dataframe格式保存到hive中

使用python在调用集群跑数据之后,数据以pandas计算,输出的结果保存到hive数据库中,最老套的办法。(注意:这里的spark版本是1.6)
步骤:

from pyspark.sql import HiveContext
from pyspark import SparkConf, SparkContext
from pyspark.sql import functions

conf = SparkConf().setAppName("test")
conf.set("spark.sql.execution.arrow.enabled", "true")
conf.set("spark.driver,memory", "6G")  # 设置最大缓存为6G

sc = SparkContext(conf = conf)
hiveContext = HiveContext(sc)

1、将pandas的dataframe数据转化为spark 的 dataframe格式

data_py = hiveContext.createDataFrame(data_pd)

2、向hive数据库中创建一个表,此表若存在,则不创建

# 设置表的字段名
str_s = ''
for i in data_pd.columns:
    str_s += '%s String,'% i
# 拼写SQL语句
sql_str = 'create table if not exists mdw.predict_lot_count ({})'.format(str_s[:-1])  # 最后一个逗号需要去掉,否则报错
hiveContext.sql(sql_str)  # 执行SQL

其中的 mdw 为库名,predict_lot_count 为表名
3、向数据库的表中存入数据

data_py.write.format("parquet").mode("overwrite").saveAsTable("predict_lot_count")

其中parquet 为数据保存格式。overwrite 为存储方式,这里为覆盖的方式。

你可能感兴趣的:(python,spark)