将Pandas DataFrame转换为Hive表
我刚接触Python和Hive。
我希望能得到一些建议。
有没有人能给我一些关于如何把Python的pandas数据框转换成Hive表的技巧?
2 个回答
根据Jose Antonio Martin H的回答……我找不到简单的方法来做到这一点。我一直无法让Pandas的Dataframe.to_sql()和Cloudera的ODBC驱动程序一起工作。所以,因为我的情况比较特殊,我手动把Dataframe导出为CSV文件,然后在它上传到HDFS后,使用HUE/Hive导入工具来处理。
Jose的回答对我有帮助的地方在于使用了非逗号分隔符(其实是用的“|”,而不是“,”或“\t”),还有就是关闭了索引。这些做法似乎对整个过程有帮助。
我尝试过用parquet格式,但无论有没有压缩都无法成功——我原以为这可能是问题所在。而且“load data local inpath”也没有成功。
这只是我的一些经验,希望能对你有所帮助。如果我能让其中的某些部分通过编程成功运行,我会在这里告诉你。
(顺便说一下,我还不能评论,但希望分享我的经验能帮助到处于困境中的其他人。)
你的脚本需要在一个可以使用“本地加载数据”方法的机器上运行。
查询 pandas 数据框,创建一个列名和数据类型的列表。
使用 Python 字符串操作(基本上就是拼接)来写一个有效的 HQL(数据定义语言)创建表的语句。
在 Hive 中执行创建表的语句。
将 pandas 数据框写成用 "\t" 分隔的 CSV 文件,同时关闭表头和索引(查看 to_csv() 的参数)。
5.- 从你的 Python 脚本中调用一个运行 Hive 的系统控制台,命令是 -e:
Use: for instance:
p = subprocess.Popen( ['hive', '-e', str_command_list], stdout = subprocess.PIPE,
stderr = subprocess.PIPE )
out, err = p.communicate()
这将调用 Hive 控制台,并执行例如加载本地数据的命令,把你的 CSV 数据插入到创建的表中。
这样你就可以开心了。