加载管道分隔的csv到配置单元

时间:2018-12-21 11:09:01

标签: python hive pyhive

我正在尝试使用python在蜂巢表中加载管道分隔的csv文件,但未成功。请协助。

完整代码:

from pyhive import hive 
host_name = "192.168.220.135" 
port = 10000 
user = "cloudera" 
password = "cloudera" 
database = "default" 
conn = hive.Connection(host=host_name, port=port, username=user, database=database) 
print('Connected to DB: {}'.format(host_name)) 
cursor = conn.cursor() 
Query = """LOAD DATA LOCAL inpath '/home/cloudera/Desktop/ccna_test/RERATING_EMMCCNA.csv' INTO TABLE python_testing fields terminated by '|' lines terminated by '\n' """ 
cursor.execute(Query)

1 个答案:

答案 0 :(得分:3)

根据您的问题,我假设csv格式如下所示,并且您希望查询将数据加载到配置单元表中。

value1 | value2 | value3
value4 | value5 | value6
value7 | value8 | value9

首先应该有一个配置单元表,并且可以使用以下查询来创建。

create table python_testing ( col1 string, col2 string, col3 string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' with SERDEPROPERTIES ( "separatorChar" = "|") stored as textfile;

请注意,分隔符和输入文件格式是在创建表时明确给出的。

表也以TEXTFILE格式存储。这是由于输入文件的格式。

如果要使用ORC表,则输入文件应为ORC格式(Hive'加载数据'命令仅将文件复制到Hive数据文件,并且不对数据进行任何转换)。一种可能的解决方法是使用STORED AS TEXTFILE创建一个临时表,将LOAD DATA放入其中,然后将数据从该表复制到ORC表。

使用“加载”命令加载数据。

load data local inpath '/home/hive/data.csv' into table python_testing;

/home/hive/data.csv应该是您的文件路径。