1

这会将数据从 dynamodb 动态导出到 s3。

-- Load S3 Table with data from DynamoDB
INSERT OVERWRITE TABLE s3_table SELECT * FROM dynamodb_table;

问题是它会留下一堆\N. 我可以手写它看起来像

-- Load S3 Table with data from DynamoDB
   INSERT OVERWRITE TABLE s3_table SELECT DCS_ID, CASE WHEN MAKE IS NULL THEN "" ELSE MAKE END, CASE WHEN MODEL IS NULL THEN "" ELSE MODEL END FROM dynamodb_table; 

问题是选择列说“当列为空时”“其他结束”

当前输出看起来像这样

PORTAL  1.5.1.25.2      2013-08-09 13:45:20.126 2013-08-09 13:45:20.282 \N      \N      \N      \N      \N      \N

所需的输出如下所示

PORTAL  1.5.1.25.2      2013-08-13 18:18:24.667 2013-08-13 18:18:24.832 
4

1 回答 1

3

配置单元输出包含用于空值的字符串“\N”(以区别于空白),因此您必须准备每一列,或者在之后处理输出(如果有大量数据,可以使用流作业。)

我经常为此使用该coalesce函数:coalesce接受多个参数并返回第一个非空值(如果全部为空,则返回空值)。在您的示例中,为了避免输出中的空值,您可以执行以下操作:

INSERT OVERWRITE TABLE s3_table
SELECT coalesce(DCS_ID,''), coalesce(MAKE,''), coalesce(MODEL,'') 
FROM dynamodb_table; 
于 2013-08-15T13:51:14.127 回答