小编Pio*_*sen的帖子

java编译器如何知道jar中代码的泛型类型信息?

我有一个重新排序java泛型的问题.据我所知,通用信息仅在编译时可用,通过称为"类型擦除"的过程,一旦编译代码并且生成.class文件,所有TYPE信息都会消失.

一旦.java文件被编译,List myList = new arrayList(),就是.class文件字节码所具有的,即使该列表被声明为.java文件中的字符串列表.

话虽如此,请考虑以下情况.

我有一个带有签名方法的jar

public void check(List<String> p)
Run Code Online (Sandbox Code Playgroud)

当我从另一个代码调用此方法时,编译器强制执行check方法的参数应该List<String>只是,没有别的.

既然检查方法存在于jar(.class文件)中List<String>,如果在生成.class文件时TYPE信息已经被REMOVED,编译器如何知道所需的TYPE信息?

java

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

如何使用 Presto 将时间列分组为 5 秒间隔并计算行数?

我正在使用 Presto 和 Zeppelin。有很多原始数据。我必须总结这些数据。

我想每 5 秒分组一次。

serviceType        logType     date
------------------------------------------------------
service1           log1        2017-10-24 23:00:23.206
service1           log1        2017-10-24 23:00:23.207
service1           log1        2017-10-24 23:00:25.206
service2           log1        2017-10-24 23:00:24.206
service1           log2        2017-10-24 23:00:27.206
service1           log2        2017-10-24 23:00:29.302
Run Code Online (Sandbox Code Playgroud)

那么结果

serviceType        logType     date                       cnt
--------------------------------------------------------------
service1           log1        2017-10-24 23:00:20          2
service2           log1        2017-10-24 23:00:20          1
service1           log1        2017-10-24 23:00:25          1
service1           log2        2017-10-24 23:00:25          2
Run Code Online (Sandbox Code Playgroud)

首先,我必须将存储的数据迁移到新表。

其次,我必须对数据进行分组并实时保存到新表中。

很难写sql脚本。

请帮我。

我必须使用 python 解释器吗?

sql presto apache-zeppelin

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

亚马逊雅典娜 - 从多个表中选择而不加入

我有三张桌子。每个表与其他两个表都有共同的列,在某些属性上有所不同。由于我对 common 属性感兴趣,因此我想发出一个请求以从所有三个表中获取数据。

我需要通过 UNION 从所有三个表中获取项目。在 AWS Athena 中可以吗?

前任:

table1 (att1, att2, att3)
table2 (att1, att2, att_3)
table3 (att1, att2, att3, att4)
Run Code Online (Sandbox Code Playgroud)

目标:从 table1、table2、table3 中获取项目,而无需在同一请求中加入。

sql amazon-web-services presto amazon-athena

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

用于高效 Athena 查询的 S3 分区(文件大小)

我有一个将每日记录加载到 S3 的管道。然后我利用 AWS Glue Crawler 创建分区以促进 AWS Athena 查询。但是,如果与其他数据相比,分区数据很大。

S3 文件夹/文件显示如下:

s3.ObjectSummary(bucket_name='bucket', key='database/table/2019/00/00/2019-00-00.parquet.gzip')   7.8 MB

s3.ObjectSummary(bucket_name='bucket', key='database/table/2019/01/11/2019-01-11.parquet.gzip')  29.8 KB
s3.ObjectSummary(bucket_name='bucket', key='database/table/2019/01/12/2019-01-12.parquet.gzip')  28.5 KB
s3.ObjectSummary(bucket_name='bucket', key='database/table/2019/01/13/2019-01-13.parquet.gzip')  29.0 KB
s3.ObjectSummary(bucket_name='bucket', key='database/table/2019/01/14/2019-01-14.parquet.gzip')  43.3 KB
s3.ObjectSummary(bucket_name='bucket', key='database/table/2019/01/15/2019-01-15.parquet.gzip') 139.9 KB
Run Code Online (Sandbox Code Playgroud)

每行末尾显示文件大小。请注意,2019-00-00.parquet.gzip包含 2019-01-11 之前的所有记录,因此其大小较大。我读过这篇文章,它说“如果您的数据严重偏向一个分区值,并且大多数查询使用该值,那么开销可能会抹去最初的好处。”

所以,我想知道我是否应该分成2019-00-00.parquet.gzip具有不同分区的较小的镶木地板文件。例如,

key='database/table/2019/00/00/2019-00-01.parquet.gzip',
key='database/table/2019/00/00/2019-00-02.parquet.gzip',
key='database/table/2019/00/00/2019-00-03.parquet.gzip', ......
Run Code Online (Sandbox Code Playgroud)

但是,我认为这种分区不是很有用,因为它没有反映旧记录的存储时间。我愿意接受所有解决方法。谢谢你。

amazon-s3 presto amazon-athena

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

INVALID_FUNCTION_ARGUMENT:数组下标越界

我正在查询具有可变长度 JSON 数组的列。

select col.pages[1].name, col.pages[2].name from assoc
Run Code Online (Sandbox Code Playgroud)

当数组中只有一个值时,我收到此错误。

INVALID_FUNCTION_ARGUMENT: Array subscript out of bounds
Run Code Online (Sandbox Code Playgroud)

如果只有一个值,如何防止此错误?

sql presto amazon-athena

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

从 Presto varchar 列解析 JSON 失败

我正在尝试将我的varchar列数据( stringifed )转换JSONMAP数据类型,以便我可以将数据作为元素引用。

WITH
data(c) AS (
    SELECT message from mydb.mytable
),
parsed AS (
    SELECT cast(json_parse(c) as map(varchar, varchar)) AS m
    FROM data
)
SELECT m['action'], m['uuid']
FROM parsed
Run Code Online (Sandbox Code Playgroud)

示例数据如下所示: {"action":"send","timestamp":1566432054,"uuid":"1234"}

我尝试了此处提供的解决方案:How to cast varchar to MAP(VARCHAR,VARCHAR) in presto,这是我从valuesselect语句替换得到查询的地方,但它不起作用。我收到错误:

INVALID_CAST_ARGUMENT: Value cannot be cast to map(varchar,varchar)

presto

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

当分区部分加载时,Amazon Athena 不返回最新数据

我定义了一个分区表,它指向使用日期分区的 S3 存储桶。我在 S3 存储桶中有过去 3 个月的数据。我已经加载了第一个月的分区。但是,在过去的两个月里,我没有使用msck repair table或命令加载分区中的数据。alter table当我尝试查询表时,过去 2 个月的数据不会从 S3 加载,只有最新的分区数据显示在查询结果中。这是预期的吗?如果是这样,为什么?

我尝试为同一个 s3 存储桶创建另一个分区表,但这一次我没有加载任何分区。当我查询该表时,我得到最新的记录。

amazon-s3 amazon-web-services amazon-athena

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

BigQuery + Amazon Athena + Presto:分区和列数的限制

根据 Google BigQuery 文档,BigQuery 具有以下限制 ( https://cloud.google.com/bigquery/quotas ):

\n\n
\n

1) 每个分区表的最大分区数 \xe2\x80\x94 4,000。

\n\n

2) 表、查询结果或视图定义中的最大列数 \xe2\x80\x94 10,000

\n
\n\n

基于 Amazon Athena 文档:( https://docs.aws.amazon.com/athena/latest/ug/service-limits.html ):

\n\n
\n

每个分区表的最大分区数 \xe2\x80\x94 20,000

\n
\n\n

AWS Athena 或 Presto 的列数是否有硬性限制?

\n\n

谢谢!

\n

presto amazon-athena

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

aws athena SQL 查询;为每个唯一的 column1 获取 column2 的唯一计数

我对 SQL 查询相当陌生,并且正在查询 aws athena 数据库。

我的第一个查询将返回给定一些参数的每个独特品牌:

-- query1
SELECT DISTINCT brand
FROM "database" 
WHERE product_gap = 'yes' AND store_name = 'petco'
Run Code Online (Sandbox Code Playgroud)

返回这样的列表:

#   brand
1   Drs. Doink and Foink
2   Zkukit!
3   Willow
4   Freshz
5   Aquatic Land
6   UniLaws
7   Seraz
.....
Run Code Online (Sandbox Code Playgroud)

依此类推 553 行。如果我选择任何品牌,例如“Seraz”并运行第二个查询,它将返回该品牌的“merch1”列的不同计数

-- query2
SELECT COUNT (DISTINCT merch1)
FROM "database" 
WHERE product_gap = 'yes' AND store_name = 'petco' AND brand='Seraz'
Run Code Online (Sandbox Code Playgroud)

返回:

#   _col0
1   2
Run Code Online (Sandbox Code Playgroud)

其中 _col0 是 seraz 的 merch1 的不同计数。

我的问题是如何组合我的查询,以便对于来自 query1 的每个唯一品牌结果,它都会运行 …

sql presto amazon-athena

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

Athena (Presto) 字符串到日期的转换

我有以下字符串:'2019-05-17 04:44:00:000'. 我想将其转换为日期,以便我可以根据时间戳查询我的表。

我尝试了以下导致错误的方法:

select street, city,
from_iso8601_timestamp(starttime)
from mydata where subtype='X';
INVALID_FUNCTION_ARGUMENT: Invalid format: "2019-05-17 04:44:00:000" is 
malformed at " 04:44:00:000"

SELECT street, city, date_parse(starttime,'%Y-%m-%d %H:%i:%s')
from mydata where subtype='X';
INVALID_FUNCTION_ARGUMENT: Invalid format: "2019-05-17 04:44:00:000" is malformed at " 04:44:00:000"
Run Code Online (Sandbox Code Playgroud)

在 Athena 中转换它的正确方法是什么?有毫秒参数吗?

presto amazon-athena

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