问题标签 [amazon-athena]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3110 浏览

sql - 使用正则表达式(SQL -Athena)逐段获取字符串路径

我想在 Amazon Athena 中将字符串转换为 SQL 中的行

由于 Athena 不支持某些功能,我被迫执行许多正则表达式功能

输入(也可以有不同的长度)可能如下所示:

我想把它变成一张看起来像这样的桌子

我已经使用以下代码从字符串中过滤出第一段文本:

但我不知道如何使用正则表达式在下一个空格之后获取文本部分

有谁知道我如何编写下一个正则表达式函数?

0 投票
1 回答
254 浏览

java - 将字符串解析为 Java 对象

我需要将String这种格式的 s 转换成一个Array对象。

有什么简单的方法可以转换它而无需完全手动完成?

更新:我从自定义 SQL 数据库 (Amazon Athena) 中提取这些值。而且自定义JDBC不支持getArray(),所以看起来我需要手动解析包含Arrayof的列Structs。不幸的是,这是数据库的限制,我无法控制它。getString()这是我在列上调用时 SQL 数据库返回的格式。

SQL 表定义

Java 对象

MessageObj

RecipientObj

解析数据。

0 投票
1 回答
247 浏览

amazon-web-services - 在 Athena 中通过 JDBC 创建的表未出现在控制台中

当我使用带有 Amazon Athena 的 JDBC 驱动程序创建表时,它不会出现在 Athena 控制台中,但在show tables in mydatabase通过 jdbc 执行命令时会出现(反之亦然)。任何想法为什么我会发生这种情况?

0 投票
2 回答
1114 浏览

hadoop - AWS 上的 Hive:将 S3 JSON 转换为列保留分区

我在 S3 中有包含多行 JSON 的文件(由换行符分隔)。我想将这些文件转换为列格式供AWS Athena使用

我正在按照转换为列格式的指南来执行此操作,但是当转换为 ORC 时,S3 中的分区约定会丢失。

在此示例中,您如何保留dt已转换为 parquet s3 文件夹结构中的分区?当我运行示例时,它只是输出s3://myBucket/pq/000000_0而不是s3://myBucket/pq/dt=2009-04-14-04-05/000000_0

这是设置接口以将 JSON 带入 Hive 表的 HQL:

这是转换为 Parquet 的 HQL

0 投票
3 回答
16104 浏览

amazon-web-services - 如何从 Amazon Athena 查询镶木地板数据?

Athena 使用 S3 表中的字段创建一个临时表。我已经使用 JSON 数据完成了这项工作。您能帮我了解如何使用镶木地板数据创建表格吗?

我试过以下:

  1. 将示例 JSON 数据转换为 parquet 数据。
  2. 将镶木地板数据上传到 S3。
  3. 使用 JSON 数据列创建临时表。

通过这样做,我可以执行查询,但结果为空。

这种方法是正确的,还是在镶木地板数据上可以采用其他方法?

示例 json 数据:

0 投票
1 回答
1048 浏览

amazon-athena - 为什么 AWS athena 将我的表创建为字符串而不是嵌套对象数组

我得到的不是嵌套表,而是一个很长的标题,其中包含 sql 命令但没有错误。为什么它工作但实际上没有正确输入 json 数据?

JSON数据格式:

0 投票
1 回答
560 浏览

python - PyAthenaJDBC (AWS athena) 中的 HIVE 参数

我正在使用名为 PyAthenaJDBC 的 python 模块,以便使用提供的 JDBC 驱动程序查询 Athena。这是链接:https ://pypi.python.org/pypi/PyAthenaJDBC/

连接已成功建立,查询也正常工作(显示数据库、显示表、选择...)但是,每当我尝试使用 Hive 参数(例如“ROW FORMAT SERDE..”)定义自定义表时,它就不再工作了,这是我的代码:

错误:第 1:8 行:输入“CREATE EXTERNAL”没有可行的替代方案(服务:AmazonAthena;状态代码:400;错误代码:InvalidRequestException;请求 ID:0cca6f3e-fe9e-11e6-be4f-a3b28f284a77)

PS:同样的查询在控制台管理中工作得很好!有什么帮助吗?

0 投票
4 回答
2130 浏览

amazon-web-services - 是否有使用 Athena JDBC 驱动程序获取查询 ID 和状态的方法?

有没有办法获得Athena query ID我提交的 Athena JDBC 驱动程序的查询?对查询状态的任何 API 调用(使用其查询 ID?)有什么方法可以通过 API 调用获取查询历史记录?

0 投票
1 回答
2219 浏览

hive - AWS Athena:“msck repair table”会产生费用吗?

我在 S3 中有如下所示的 ORC 数据:

每小时我都会运行一个 EMR 作业,将 S3 中的原始 JSON 转换为 ORC,并使用 Athena 摄取的路径分区约定(上图)将其写出。EMR 作业完成后,我运行msck repair table以便 Athena 可以获取新分区。

我有3个相关问题:

  1. 在这种情况下运行是否会msck repair table在 AWS 中花费我的钱?
  2. AWS Docs 说 msck repair table可以超时。有没有办法我可以在数据管道中迈出一步来继续运行这个命令,直到它成功完成?
  3. 我更愿意手动将分区添加到 Athena(因为我知道我正在处理的年、月、日、小时)。但是我不知道,clientId因为可能有 1-X 个,而且我不知道在运行 EMR 时存在哪些。是否有解决此问题的最佳实践方法(使用 Hive 或其他方法)?我可以进行 s3 api 调用来获取列表s3://bucket/org/并编写代码来迭代列表并手动添加。我希望有一个更简单的方法...

注意:当我说“手动添加分区”时,我的意思是做这样的事情:

0 投票
1 回答
785 浏览

django - java.sql.SQLExceptionPyRaisable 在第二次尝试使用 Django 连接到 Athena 时

我正在使用名为 PyAthenaJDBC 的 python 模块,以便使用提供的 JDBC 驱动程序查询 Athena。这是链接:https ://pypi.python.org/pypi/PyAthenaJDBC/

我一直面临一些持久的问题。每当我连续两次使用 Athena 连接时,我都会收到此 java 错误。

事实上,我能够连接到 Athena、显示数据库、创建新表甚至查询内容。我正在使用 Django 构建应用程序并运行其服务器以使用 Athena 但是,我必须重新运行服务器才能使 Athena 连接再次工作,

这是我建立的课程的一瞥

用法示例:

工作得很好!但是刷新页面会导致此错误:

错误

请注意,我使用的是本地 .jar 文件:我认为这可以解决问题,但我错了即使我删除了 JDBC 驱动程序的路径并让模块从 s3 下载它,错误仍然存​​在:

文件“/home/tewfikghariani/.virtualenvs/venv/lib/python3.4/site-packages/pyathenajdbc/connection.py”,第 69 行,init ATHENA_CONNECTION_STRING.format(region=self.region_name, schema=schema_name), props ) jpype._jexception.java.sql.SQLExceptionPyRaisable: java.sql.SQLException: 没有找到适合 jdbc:awsathena://athena.us-west-2.amazonaws.com:443/hive/default/ 的驱动程序

此外,当我自己运行模块时,它工作得很好。当我在渲染模板之前在视图中设置多个连接时,效果也很好。

我猜这个问题与 django 视图有关,一旦其中一个视图执行与 athena 的连接,下一个连接就不可能了,除非我重新启动服务器,否则会引发错误

有什么帮助吗?如果缺少其他详细信息,我会立即提供。