我正在尝试使用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)
答案 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应该是您的文件路径。