将文件记录到Hive中

时间:2014-04-14 12:27:31

标签: hadoop hive

我有一个日志文件“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;

谢谢!

2 个答案:

答案 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