小编ast*_*hsy的帖子

AWS Athena 如何处理单行 JSON?

我目前正在使用 Athena 和Kinesis Firehose, Glue CrawlerKinesis Firehose正在将 JSON 保存到单行文件,如下所示

{"name": "Jone Doe"}{"name": "Jane Doe"}{"name": "Jack Doe"}
Run Code Online (Sandbox Code Playgroud)

但是我注意到 athena 查询select count(*) from db.names 返回 1 而不是 3。在搜索问题之后。我找到了以下文件。

https://aws.amazon.com/premiumsupport/knowledge-center/select-count-query-athena-json-records/?nc1=h_ls

文章说 JSON 文件文件应该用新行存储。

{"name": "Jone Doe"}
{"name": "Jane Doe"}
{"name": "Jack Doe"}
Run Code Online (Sandbox Code Playgroud)

是否有一些聪明的技巧可以在单行 JSON 文件上运行 athena 查询?


更新

感谢@Constantine,AWS Athena 正在执行分布式处理。由于单行 JSON 文件没有分隔符,因此无法执行分布式处理。因此,您必须在保存文件之前对其进行转换。

Kinesis Firehose 提供使用 Lambda 的转换,我添加了以下转换,以便从 AWS Athena 查询数据。

?const addNewLine = (data) => {
   const parsedData = JSON.parse(new Buffer.from(data,'base64').toString('utf8'));
   return new Buffer.from(JSON.stringify(parsedData) + '\n').toString('base64') …
Run Code Online (Sandbox Code Playgroud)

amazon-athena aws-glue amazon-kinesis-firehose

7
推荐指数
1
解决办法
1405
查看次数

我<N + 1且i <= N不同吗?

我曾经知道i <= N和之间没有区别i < N+1
但是,当我进入6 6程序时.

如果i <= N那么它打印

1 6 6
6 1 1
2 3 3
3 2 2

除此以外

1 6 6
6 1 1
2 3 3
3 2 2
3 2 2
2 3 3


我无法弄清楚它为何会有所作为

#include <iostream>
#include <cmath>

using namespace std;

typedef long long LNT;

LNT gcd(LNT a, LNT b)
{
    if( b == 0)
        return a;

    return gcd(b, a%b);
}

int main()
{
    LNT …
Run Code Online (Sandbox Code Playgroud)

c c++ comparison for-loop

4
推荐指数
1
解决办法
206
查看次数

在ruby中使用2D数组for循环的麻烦

我学过C++,Java,现在我正在学习Ruby.
但对我而言,很难适应ruby中的迭代.

n = 4
arys = Array.new(3, Array.new(n+1, 0))

for i in 1..2
    for j in 1..n
        arys[i][j] = (i-1)*n+j
    end
end

p arys
Run Code Online (Sandbox Code Playgroud)

上述代码的输出如下

[[0, 5, 6, 7, 8], [0, 5, 6, 7, 8], [0, 5, 6, 7, 8]]
Run Code Online (Sandbox Code Playgroud)

我认为这就像C中的代码一样

for(int i = 1; i<=2; i++)
   for(int j = 1; j<=n; j++)
       arys[i][j] = (i-1)*n+j
Run Code Online (Sandbox Code Playgroud)

因此,我预计输出会像
[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 5, 6, 7, 8]]

上面两个代码之间的区别是什么?

ruby for-loop multidimensional-array

2
推荐指数
1
解决办法
93
查看次数