gpt4 book ai didi

python - 如何使用 luigi 将输出写入 orc 格式的分区表?

转载 作者:可可西里 更新时间:2023-11-01 16:37:30 25 4
gpt4 key购买 nike

假设我们有这样的工作:

class MRjob(JobTask):
def output(self):
return ...

def requires(self):
return ...

def mapper(self, line):
# some line process
yield key, (...information, stored in hashable type...)

def reducer(self,key,values):
# some reduce logic... for example this
unique = set(values)
for elem in unique:
yield key, elem[0], elem[1]

我应该在输出方法中做什么才能将数据插入现有的表分区(而且表是以orc格式存储的)?我想跳过将数据转换为 orc 的过程,因此我尝试

return HivePartitionTarget(self.insert_table, database=self.database_name, partition=partition)

但这没有用。我还发现 luigi 试图将输出传递给某个文件。使用 HivePartitionTarget 时,luigi 会返回类似“对象没有写入属性”的错误,因此我的假设是 HivePartitionTarget 只是不包含写入方法。因此,我认为我做错了什么,应该使用另一种方法,但没有找到一个例子

最佳答案

我不太清楚如何在 luigi 中实现这一点。我可能建议的是使用简单的方法以普通分隔格式(例如逗号分隔格式)编写 luigi 脚本的输出。

在此之上创建一个外部配置单元表:

CREATE EXTERNAL TABLE temp_table(
<col_name> <col_type>,
<col_name2> <col_type>
.......
.......
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
LOCATION ‘ /hive/data/weatherext’;

使用简单的 hive insert-into-select 查询将数据插入原始表(具有 ORC 格式数据)。

INSERT INTO TABLE target_table
PARTITION( xxx )
SELECT
COL_NAME1,
COL_NAME2
FROM temp_table;

您的目标表将包含 ORC 格式的数据,而 Hive 将为您处理转换。

详细语法引用 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-InsertingdataintoHiveTablesfromqueries

关于python - 如何使用 luigi 将输出写入 orc 格式的分区表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com