这会将来自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;
问题是选择列说“当列为NULL然后”“否则列结束”
当前输出如下所示
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
答案 0 :(得分:3)
hive输出包含空值的字符串“\ N”(以区别于空白),因此要么必须准备每一列,要么之后处理输出(如果有大量数据,可以使用流作业。)
我经常使用coalesce
函数:coalesce
接受多个参数并返回第一个非null(如果全为null则返回null)。在您的示例中,为了避免输出中的空值,您可以执行以下操作:
INSERT OVERWRITE TABLE s3_table
SELECT coalesce(DCS_ID,''), coalesce(MAKE,''), coalesce(MODEL,'')
FROM dynamodb_table;