我从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;
像这样我希望第一个记录是第一个记录,最后是增量数据
我们如何实现这一目标?
答案 0 :(得分:2)
创建镶木桌时不需要指定以下语句
行格式分隔的字段以','终止
只需指定存储为镶木地板即可
create external table test(id int, name string, address string, nation string, date string) stored as parquet location '/user/XXXXX/test';