我有一个日志文件“sample.log”,如下所示:
41 Texas 2000
42 Louisiana4 3211
43 Texas 5000
22 Iowa 4998p
在日志文件中,第一列是id,第二个是州名和第三个。如果你看到州名,它有Louisiana4,销售总额有4998p。我如何清理它以便将其插入Hive(使用Python或其他方式?)。你能说明一下这些步骤吗?
我想插入Hive表tblSample:
表架构是:
CREATE TABLE tblSample(
id int,
state string,
sales int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/user/cloudera/Staging'
;
要将数据加载到Hive表中,我可以这样做:
load data local inpath '/home/cloudera/sample.log' into table tblSample;
谢谢!
答案 0 :(得分:0)
您可以将数据原样加载到配置单元表中,然后使用UDF清理数据并加载到另一个表中。这将比Python更有效,因为它将作为mapr reduce运行。
答案 1 :(得分:0)
我宁愿按原样存储数据,并在获取数据时进行清理。这会简单得多。无需外部代码。例如:
hive> CREATE TABLE tblSample(
> id string,
> state string,
> sales string)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
> STORED AS TEXTFILE
> LOCATION '/user/cloudera/Staging';
hive> select regexp_replace(state, "[0-9]", ""), regexp_replace(sales, "[a-z]", "") from tblSample;
HTH