pandas dataframe写入到hive方式

 更新时间:2023年08月21日 08:34:58   作者:taiguangxing  
这篇文章主要介绍了pandas dataframe写入到hive方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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表的过程。

如何把dataframe直接保存到hive表中?

有多种方式把一个dataframe保存到hive表中:

1.直接把dataframe的内容写入到目标hive表

df.write().mode("overwrite").saveAsTable("tableName");
或
df.select(df.col("col1"),df.col("col2")) .write().mode("overwrite").saveAsTable("schemaName.tableName");
或
df.write().mode(SaveMode.Overwrite).saveAsTable("dbName.tableName");

2.注册一张临时表,再通过sql语句插入到目标表

df.createOrReplaceTempView("$tempTableName")
spark.sql("insert into table dbName.$hive_table_name PARTITION($partition_column) select * from $tempTableName")

注意:

第2种方式可以指定写入的分区,而临时表会在任务完成时自动清除,但最好是在不使用时主动清除掉。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python设计模式中的创建型工厂模式

    Python设计模式中的创建型工厂模式

    这篇文章主要介绍了Python设计模式中的创建型工厂模式,工厂模式即Factory Pattern,是提供创建对象的最佳方式,下文小编介绍Python工厂模式的相关资料,需要的朋友可以参考一下
    2022-02-02
  • 浅谈keras 的抽象后端(from keras import backend as K)

    浅谈keras 的抽象后端(from keras import backend as K)

    这篇文章主要介绍了浅谈keras 的抽象后端(from keras import backend as K),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Win7上搭建Cocos2d-x 3.1.1开发环境

    Win7上搭建Cocos2d-x 3.1.1开发环境

    现在,越来越多的公司采用Cocos2d-x 3.0来开发游戏了,但是现在这样的文章并不多,所以打算写一系列来帮助初学者快速掌握Cocos2d-x 3.0。首先就从开发环境的大家说起吧
    2014-07-07
  • 在Python中字典根据多项规则排序的方法

    在Python中字典根据多项规则排序的方法

    今天小编就为大家分享一篇在Python中字典根据多项规则排序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 一篇文章带你顺利通过Python OpenCV入门阶段

    一篇文章带你顺利通过Python OpenCV入门阶段

    这篇文章主要介绍了Python OpenCV的知识体系,文章中涉及到的知识点很多,需要了解这方面知识的小伙伴可以慢慢理解,慢慢学习
    2021-08-08
  • Python lambda表达式用法实例分析

    Python lambda表达式用法实例分析

    这篇文章主要介绍了Python lambda表达式用法,结合实例形式分析了lambda表达式的具体功能、应用场景及相关使用技巧,需要的朋友可以参考下
    2018-12-12
  • jenkins+python自动化测试持续集成教程

    jenkins+python自动化测试持续集成教程

    这篇文章主要介绍了jenkins+python自动化测试持续集成教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python namedtuple函数的使用

    python namedtuple函数的使用

    今天介绍collections里面的一个好用的小函数: namedtuple函数(不创类而可以拥有类的便利),例如可以使用object.attribute
    2021-06-06
  • Python如何解除一个装饰器

    Python如何解除一个装饰器

    这篇文章主要介绍了Python如何解除一个装饰器,帮助大家更好的理解和学习Python装饰器,感兴趣的朋友可以了解下
    2020-08-08
  • Python实现统计文本中字符的方法小结

    Python实现统计文本中字符的方法小结

    在计算机编程中,经常需要对文本数据进行处理和分析,字符统计是其中一个常见任务,本文将详细介绍如何使用Python进行字符统计,希望对大家有所帮助
    2024-01-01

最新评论