pandas dataframe 写入hive表
关键流程主要分为两步:
1:将pandas dataframe转换为sparkdataframe:这一步骤主要使用spark自带的接口:
spark_df = spark.createDataFrame(pd_df)
2:将spark_df写入到hive的几种方式
spark_df.write.mode('overwrite').format("hive").saveAsTable("dbname.tablename")
以下是一个demo的完整代码:
import pandas as pd
import numpy as np
from pyspark import SparkContext,SparkConf
from pyspark.sql import HiveContext,SparkSession
from pyspark.sql import SQLContext
pd_df = pd.DataFrame(np.random.randint(0,10,(3,4)),columns=['a','b','c'])
spark = SparkSession.builder.appName('pd_2_hive').master('local').enableHiveSupport().getOrCreate()
spark_df = spark.createDataFrame(pd_df)
#spark dataframe 有接口可以直接写入到hive
spark_df.write.mode('overwrite').format("hive").saveAsTable("dbname.tablename")
'''
其中 overwrite 代表如果表中存在数据,那么新数据会将原来的数据覆盖,此外还有append等模式,详细介绍如下:
* `append`: Append contents of this :class:`DataFrame` to existing data.
* `overwrite`: Overwrite existing data.
* `error` or `errorifexists`: Throw an exception if data already exists.
* `ignore`: Silently ignore this operation if data already exists.
'''
#此外还可以将spark_df 注册为临时表,之后通过sql的方式写到hive里
spark_df.registerTempTable('tmp_table')
tmp_sql = '''create table dbname.tablename as select * from tmp_table'''
spark.sql(tmp_sql)
spark.stop()
至此,便完成了pandas dataframe 写入到 hive表的过程。