使用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
为存储方式,这里为覆盖的方式。