- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经使用 Amazon EMR 设置了一个集群。我在 S3 上有一个 python 库(从 github 克隆,在 pip 上不可用)。
我想提交一个使用 udf 的 pig 作品,它利用了 S3 中存在的库。
我不想将库添加到系统路径,因为它只会被使用一次。
我无法尝试任何有意义的事情,因为我不知道如何解决这个问题,因此到目前为止我没有尝试过任何代码示例或方法。帮助将不胜感激! :)
最佳答案
仔细阅读以下给定的 Material 。
从 Pig 调用用户定义的函数:
Pig 提供了从 Pig 脚本中调用用户定义函数 (UDF) 的能力。您可以执行此操作以实现自定义处理以在您的 Pig 脚本中使用。当前支持的语言是 Java、Python/Jython 和 JavaScript。 (尽管 JavaScript 支持仍处于试验阶段。)
以下部分介绍了如何使用 Pig 注册您的函数,以便您可以从 Pig shell 或 Pig 脚本中调用它们。有关在 Pig 中使用 UDF 的更多信息,请转至 http://pig.apache.org/docs/r0.14.0/udf.html .
从 Pig 调用 JAR 文件:
您可以使用 Pig 脚本中的 REGISTER 命令将自定义 JAR 文件与 Pig 一起使用。 JAR 文件是本地或远程文件系统,例如 Amazon S3。当 Pig 脚本运行时,Amazon EMR 会自动将 JAR 文件下载到主节点,然后将 JAR 文件上传到 Hadoop 分布式缓存。这样,集群中的所有实例都会根据需要自动使用 JAR 文件。
在 Pig 中使用 JAR 文件
1.将您的自定义 JAR 文件上传到 Amazon S3。
2.在您的 Pig 脚本中使用 REGISTER 命令指定自定义 JAR 文件在 Amazon S3 上的存储桶。
REGISTER s3://mybucket/path/mycustomjar.jar;
从 Pig 调用 Python/Jython 脚本
您可以向 Pig 注册 Python 脚本,然后从 Pig shell 或 Pig 脚本中调用这些脚本中的函数。您可以通过使用 register 关键字指定脚本的位置来执行此操作。
由于Pig是用Java编写的,它使用Jython脚本引擎来解析Python脚本。有关 Jython 的更多信息,请访问 http://www.jython.org/ .
从 Pig 调用 Python/Jython 脚本
1.编写一个 Python 脚本并将脚本上传到 Amazon S3 中的某个位置。这应该是创建 Pig 集群的同一帐户所拥有的存储桶,或者设置了权限以便创建集群的帐户可以访问它。在这个例子中,脚本被上传到
s3://mybucket/pig/python.
2.启动一个pig集群。如果您要从 Grunt shell 访问 Pig,请运行交互式集群。如果您从脚本运行 Pig 命令,请启动一个脚本化的 Pig 集群。在此示例中,我们将启动一个交互式集群。
3.因为我们已经启动了一个交互式集群,所以我们现在将通过 SSH 连接到我们可以运行 Grunt shell 的主节点。有关如何通过 SSH 连接到主节点的更多信息,请参阅通过 SSH 连接到主节点。
4.在命令行输入 pig 运行 Pig 的 Grunt shell。
pig
5.在 Grunt 命令提示符处使用 register 关键字向 Pig 注册 Jython 库和您的 Python 脚本,如下所示,您可以在其中指定脚本在 Amazon S3 中的位置。
grunt> register 'lib/jython.jar';
grunt> register 's3://mybucket/pig/python/myscript.py' using jython as myfunctions;
6.加载输入数据。以下示例从 Amazon S3 位置加载输入。
grunt> input = load 's3://mybucket/input/data.txt' using TextLoader as (line:chararray);
7.您现在可以通过使用 myfunctions 引用它们来从 Pig 中调用脚本中的函数。
grunt> output=foreach input generate myfunctions.myfunction($1);
关于python - AWS EMR 从 S3 导入外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38810402/
对于在 AWS 云中配置基础设施,我们目前使用从 ansible 角色调用的云形成模板,但我们发现在增加基础设施的规模后,此代码在 GitHub 中变得非结构化或未模块化 Github上有意大利面条式
我一直在阅读documentation for AWS Cloudwatch events至trigger AWS Batch我不知道如何从 cloudwatch 事件触发 aws 批处理: 在 aw
我正在尝试使用入口控制器安装我的CA证书。我正在遵循这份指南。Https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-co
如何使用 aws cloudformation 或 aws cdk 设置 aws aurora mysql 表? 在我的设置中,我有一个使用 lambda 实现各种微服务的无服务器应用程序。数据库是无
我看到了各种使用 AWS CDK 的示例,其中一些使用 aws-cdk-lib,另一些使用 @aws-cdk/core。这些之间有什么区别,什么时候应该使用一个或另一个? 最佳答案 aws-cdk-l
我看到了各种使用 AWS CDK 的示例,其中一些使用 aws-cdk-lib,另一些使用 @aws-cdk/core。这些之间有什么区别,什么时候应该使用一个或另一个? 最佳答案 aws-cdk-l
我在 cdk 研讨会上建立了一个小的 lambda 函数 here .我正在用 typescript 编写 lambda 函数,通过管道进行部署,该管道创建了一个包含 lambda 函数的云形成堆栈。
我刚刚开始使用 AWS 服务,尤其是 AWS Lambda。有没有办法从 Lambda 代码 (Java) 中使用 AWS KMS 服务。我想使用 KMS 来解密加密的外化(从属性读取) secret
CFN 模板是否可以根据参数向 ALB 添加一些特定的安全组? 我遇到了两个安全组添加到 ALB 的情况: ALB Type: AWS::ElasticLoadBalancingV2::LoadB
例如,我有一个主要公司 AWS 账户,其安全组为 xxxxx。现在我有了我的个人 aws 安全组-yyyyy。这些帐户根本不相关。我可以将接受组-yyyyy 添加到组-xxxxx 中,从而允许我的
我有一个 Lambda 函数,它有多个 MSK 触发器配置 - 每个都针对不同的主题。 如果 Lambda 的输入 ( MSKEvent ) 可以包含多个不同的主题,则未在官方文档中找到任何信息。 官
在 AWS Glue 中创建 JDBC 连接时,有什么方法可以从 AWS secret manager 获取密码而不是手动硬编码吗? 最佳答案 我必须在我当前的项目中这样做才能连接到 Cassandr
谁能告诉我: aws-sdk/clients/appsync , 和 aws-appsync 根据文档,aws-sdk/clients/appsync使用是因为只包括 aws-sdk当我们只需要 ap
我不小心删除了我的放大前端并创建了一个新前端。如何将现有的放大后端导入新创建的放大应用项目文件夹? 我按照后端标签上的步骤操作 amplify init --appId(“您的新AMPLIFY APP
我正在使用 Java Sdk 创建粘合作业。它只有两个必需的参数 Command 和 Glue 版本。 但我需要使用自动脚本生成来创建工作。正如我们可以从控制台做的那样,我们添加数据源、AWS Glu
目前我正在使用 AWS Glue 作业将数据加载到 RedShift,但在加载之后我需要运行一些可能使用 AWS Lambda 函数的数据清理任务。有没有办法在 Glue 作业结束时触发 Lambda
简单的 aws lambda 和 aws lambda@edge 有什么区别? 最佳答案 Lambda 根据某些触发器执行函数。 Lambda 的用例非常广泛,并且与许多 AWS 服务高度集成。您甚至
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 个月前。 社区 9
我正在尝试使用 Python 使用 AWS-CDK 创建托管广告。以下是错误,从 JavaScriptError(resp.stack) 引发 JSIIError(resp.error)jsii.er
这两个包似乎在很大程度上做同样的事情?这两个包之间的预期区别是什么,我应该使用哪个包? 最佳答案 Pipelines 是较新的 --experimental-- (编辑:它不再在 Experiment
我是一名优秀的程序员,十分优秀!