使用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
爲存儲方式,這裏爲覆蓋的方式。