将具有不同结构的表追加/合并到Hive中的一个表中?

时间:2018-12-18 21:18:12

标签: python hive

我有几个输入表,如图所示。我想创建一个包含两个输入表中的列的输出表,如图所示。输入表中的列数和列名均无法更改。我想创建一个动态过程,该过程读​​取输入表并创建具有所有列的输出表。我正在使用python。有人做过吗?任何帮助深表感谢。

Input and Output Table

1 个答案:

答案 0 :(得分:1)

这是可以实现您想要的解决方案。但是,由于我不知道您的数据格式,因此我只能确定它们将如何到达。
如果您使用的是Hive并以csv或excel格式下载数据,则只需将以下代码替换为df1 = pd.read_excel(filepath)df1 = pd.read_csv(filepath)

import pandas as pd

df1 = pd.DataFrame({
        'Col1': [1,11,22],
        'Col2': ['qwe','ert','eryy'],
        'Col3': ['111','222','333'],
        'Col4': ['match1','fail1','fail2'],
        'Col5': ['fail3','fail4','match2'],
        })
df2 = pd.DataFrame({
        'Col1': [123, 433],
        'Col4': ['match1','fail12'],
        'Col5': ['fail33','match2'],
        'Col6': ['fee','foo'],
        'Col7': ['spam','spam'],
        })

df3 = pd.merge(df1, df2, how='outer', 
               left_on=['Col1','Col4','Col5'], 
               right_on=['Col1','Col4','Col5'])

print (df3)
#   Col1  Col2 Col3    Col4    Col5 Col6  Col7
#0     1   qwe  111  match1   fail3  NaN   NaN
#1    11   ert  222   fail1   fail4  NaN   NaN
#2    22  eryy  333   fail2  match2  NaN   NaN
#3   123   NaN  NaN  match1  fail33  fee  spam
#4   433   NaN  NaN  fail12  match2  foo  spam