如何将镶木地板文件加载到配置单元表

时间:2017-02-22 22:00:46

标签: hive sqoop parquet

我从mysql做了一个sqoop导入并获得了一个csv文件。 该文件的内容如下

#!/usr/bin/env python
# encoding: utf-8

from pony.orm import *

db = Database()

class Record(db.Entity):
    id = PrimaryKey(int)

db.bind("sqlite", "database.sqlite", create_db=True)
db.generate_mapping(create_tables=True)

records = [{"id":1234},{"id":1234}]

@db_session
def saveRecords(records):
    for r in records:
        try:
            Record(**r)
        except Exception as e:
            print("error caught")
            p = Record.get(id=r.get("id"))
            p.set(**r)

saveRecords(records)

现在我做了相同的sqoop导入作为镶木地板文件。我有一个扩展名为.parquet的文件。

我想使用镶木地板文件创建一个表。我尝试过以下但是它给了我不同的错误。

1,KM,Skypark,null,2017-02-21 14:40:49.0,null
2,KM,null,null,2017-02-21 14:40:49.0,null
3,HD,null,null,2017-02-21 14:40:49.0,null
4,AB,SD,USA,2017-02-21 14:40:49.0,null
5,ABa,SaD,US,2017-02-21 14:40:49.0,null
6,DF,SDF,SF,2017-02-21 14:40:49.0,null
7,DF,SDF,SF,2017-02-21 14:41:44.0,null
8,DF,SDF,SF,2017-02-21 14:44:55.0,null
9,DF,SDF,SF,2017-02-21 14:47:59.0,null

如何获得镶木桌子以给出我作为csv表的确切结果。

  

假设我将增量数据存储到存储以前数据的同一文件夹中。我获得了ID 10和11的记录。现在,当我将数据从文件夹加载到镶木地板表时,我将增量数据作为第一个记录,然后是初始数据。

我的意思是说表格看起来像

create external table test(id int, name string, address string, nation string, date string) row format delimited fields terminated by ',' stored as parquet;

load data inpath '/user/XXXXX/test' into table test;

像这样我希望第一个记录是第一个记录,最后是增量数据

我们如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

创建镶木桌时不需要指定以下语句

  

行格式分隔的字段以','终止

只需指定存储为镶木地板即可

create external table test(id int, name string, address string, nation string, date string) stored as parquet location '/user/XXXXX/test';