- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用AWS's JDBC Driver允许运行 Node 6.10 的 Lambda 函数连接到 AWS Athena 并创建数据库。 (我还希望能够创建和查询该数据库内的表)。
我已尝试使用 similar question 的答案中的以下代码:
var JDBC = require('jdbc');
var jinst = require('jdbc/lib/jinst');
if (!jinst.isJvmCreated()) {
jinst.addOption("-Xrs");
jinst.setupClasspath(['./AthenaJDBC41-*.jar']);
}
var config = {
// Required
url: 'jdbc:awsathena://athena.us-east-1.amazonaws.com:443',
// Optional
drivername: 'com.amazonaws.athena.jdbc.AthenaDriver',
minpoolsize: 10,
maxpoolsize: 100,
properties: {
s3_staging_dir: 's3://aws-athena-query-results-*/',
log_path: '/logs/athenajdbc.log',
user: 'access_key',
password: 'secret_key'
}
};
var hsqldb = new JDBC(config);
hsqldb.initialize(function(err) {
if (err) {
console.log(err);
}
});
当我在自己的计算机(Mac OSX El Capitan 10.11.6)上运行此程序时,我看到弹出窗口如下图所示,其中消息不存在 Java 运行时,请求安装。
打印到我的控制台。
当我将代码部署到 Lambda 并在那里运行时,它失败并显示以下消息:
错误:/var/task/node_modules/java/build/Release/nodejavabridge_bindings.node:无效的 ELF header
在本地运行时,我可以看到 var hsqldb = new JDBC(config);
行失败,但是在 Lambda 上运行时,在需要 JDBC 时立即发生错误(第一行上面的代码)。
无效的 ELF header
问题似乎表明 node_modules/java/build/Release/nodejavabridge_bindings.node
文件是为与以下版本不兼容的架构编译的:运行 AWS Lambda 的版本 (Linux x64)。
这解释了本地运行与在 Lambda 上运行时的行为差异。
我尝试过使用node-gyp专门针对 x64 架构编译资源,发现问题发生变化但未解决。
我成功运行的node-gyp命令是node-gyp configure --arch=x64
(在node_modules/java/
目录内运行)
在 Lambda 上运行时,我们不再看到无效的 ELF header
错误,而是看到模块初始化错误
(请参阅下面的日志)
module initialization error: Error
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/var/task/node_modules/java/lib/nodeJavaBridge.js:21:16)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
最佳答案
您在这里描述了几个问题。
首先是 MacOS 中缺少 JVM。这是 node-java 中记录的错误。此链接描述了该问题的解决方法。
https://github.com/joeferner/node-java/issues/90#issuecomment-45613235
应用该命令并更改“setupClasspath”语句后,您的示例应该可以在本地运行。
jinst.setupClasspath(['./AthenaJDBC41-1.0.1.jar']);
对于 ELF 问题,您无法在 MacOS 中为 Node 构建 Linux 原生模块。由于 npm 不分发预构建版本,因此您只能在目标等效计算机上构建可部署版本。
这意味着您需要在 Linux AMI(最好是 Lambda AMI)上安装/打包模块。
这里有一篇关于如何执行此操作的 AWS 博客文章:
https://aws.amazon.com/blogs/compute/nodejs-packages-in-lambda/
使用的 AMI 版本:
http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html
关于node.js - 使用 Node Lambda 通过 JDBC 连接到 AWS Athena 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43565037/
我在 Athena 中成功创建了数据库表。请参阅下面的查询。 CREATE EXTERNAL TABLE IF NOT EXISTS s3_access_logs_db.wafbucket_lo
我正在尝试与 aws athena 合作,对我们存储在 s3 中的 json 文件进行一些查询。所以,我设法创建了一个简单的模式,一切似乎都很好,直到我注意到我的一些文件没有被考虑在内。 文件的键是用
这个问题在这里已经有了答案: AWS ATHENA: user-defined variables (4 个答案) 关闭去年。 我在 aws-athena 中有一个 SQL,它看起来或多或少像这样
刚接触 AWS,第一次使用 Athena。将不胜感激任何帮助/澄清。 我将查询结果位置设置为 s3://aws-athena-query-results-{ACCOUNTID}-{Region},无论
我正在尝试使用 Aws Athena 在 csv 文件上创建一个外部表,代码如下,但行 TBLPROPERTIES ("skip.header.line.count"="1")不起作用:它不会跳过 c
我需要将表中的某些字段隐藏到特定用户组。 我想到了创建一个查看 这允许我屏蔽这些字段。但是,一旦将权限设置为仅授予对 View 的访问权限,查询就会失败,因为它们还需要访问在 View 下正在查询的表
在 Athena 中创建表时,我无法使用特定文件创建表。有没有办法从给定的存储桶中选择以“year_2019”开头的所有文件?例如 s3://bucketname/prefix/year_2019*.
我有这个查询: SHOW PARTITIONS tablename; 结果是: dt=2018-01-12 dt=2018-01-20 dt=2018-05-21 dt=2018-04-07 dt=2
我一直在使用以下查询在 Athena 中创建一个表, CREATE EXTERNAL TABLE IF NOT EXISTS test.test_table ( `converteddat
我想将字符串的数据类型(例如:'2018-03-27T00:20:00.855556Z')转换为时间戳(例如:'2018-03-27 00:20:00')。 实际上我在 Athena 中执行查询: s
该表有一列像这样, data MAP 和行喜欢, id | data 1 | {"foo": 123} 2 | {"bar": 456} 那么,如何搜索 data["bar"] = 456? 我
我觉得这应该很简单,但我一直在努力寻找正确的术语,请耐心等待。 我有两列,timestamp和 voltages这是数组 如果我做一个简单的 SELECT timestamp, voltages FR
我正在尝试从超集访问 Athena,连接成功并且可以在 SQL 编辑器中看到所有模式和表(启用在 SQL 实验室中公开此数据库)。 在 SQL 编辑器上加载元数据时返回以下错误: ERROR OCCU
有没有人尝试过从 Oracle Data Integrator 连接 AWS Athena。 我一直在尝试这个,但我找不到合适的 JDBC 连接字符串。 我遵循的步骤 https://docs.aws
运行 MSCK repair tablename 命令时,athena查询编辑器返回错误 tables not in metastore . 但是表存在,我可以在该表上查询。 我有数据保存在 S3形式
我想通过 API 在 Athena 中创建一个数据库。我在 S3 中有 Parquet 文件,我想使用 API 进行查询,我想使用 Athena 进行查询。 无论如何,我可以通过 Athena 的 A
如何从嵌套的 json 文件创建 Athena 表?这是我的示例 json 文件。我只需要选定的键值对,例如 roofcondition 和 garagestalls。 { "reportId":
如何从嵌套的 json 文件创建 Athena 表?这是我的示例 json 文件。我只需要选定的键值对,例如 roofcondition 和 garagestalls。 { "reportId":
我在 Amazon Athena 中获得了一张表,其中一列包含 XML 数据。这可能不是最好的方法,但我需要利用现有的资源。 据我所知,没有原生支持从这些 XML 中提取数据(比如使用 XPATH 等
我得到了以下格式的带有嵌套结构的 JSON 文档 { "id": "p-1234-2132321-213213213-12312", "name": "athena to the re
我是一名优秀的程序员,十分优秀!