在CDH平台上为Streamsets导入扩展包前, 先设置一个用来存储这些扩展包的目录
- 在Cloundera管理平台界面中, 选择StreamSets服务 然后点击Configuration.
- 在 Configuration 页面, 在 Data Collector 高级配置选项中的 (Safety Valve) sdc-env.sh 区域, 增加环境变量 STREAMSETS_LIBRARIES_EXTRA_DIR 并把它指向存放扩展包的目录 , 按照这样的格式:
export STREAMSETS_LIBRARIES_EXTRA_DIR="<external directory>"
举例:
export STREAMSETS_LIBRARIES_EXTRA_DIR="/opt/sdc-extras/"
默认的路径是:/var/lib/sdc.
- 在每个运行Data Collector的节点创建目录 /opt/sdc-extras/
- 在每个节点给 Data Collector 的用户增加扩展目录的权限。
举例来说, 如果你是用用户名和用户组名都是:sdc的用户来运行Data Collector 服务,那么可以使用下面的命令把扩展目录的权限赋予sdc:sdc :
chown -R sdc:sdc /opt/sdc-extras
- 当使用默认启动的java 安全管理器的时候,需要把扩展包目录加入Data Collector高级配置片段中的sdc-sercurity.policy属性,配置格式如下:
// user-defined external directory grant codebase "
file://<external directory>-" { permission java.security.AllPermission; };
案例:
// user-defined external directory grant codebase
"file:///opt/sdc-extras/-" { permission java.security.AllPermission; };
- 重启Data Collector.
相关信息
Data Collector Environment Configuration
Step 2. Install External Libraries
配置好扩展包存放目录之后,使用 Data Collector 的Package Manager 来 安装扩展包
-
在Data Collector界面中,右上角的工具栏中, 点击 Package Manager 图标:
-
在导航栏中, 点击 External Libraries:
Data Collector 会罗列出所有已经安装好的扩展包。
- 在右上角工具栏的下方, 点击 Install External Libraries 图标:
- 在安装扩展包的对话框中, 选择扩展包对应的stage 库。
举例说明, 如果你要按照 JDBC Multitable Consumer源需要的JDBC驱动,选择JDBC stage 库。如果你要给 Groovy Evaluator processor安装java的扩展工具包,则需要选择 Groovy stage库 。
- 浏览文件找到你要安装的扩展包然后点击Open。
- 点击 Upload,将扩展包安装到指定的stage库
Data Collector 安装扩展包然后回弹出一个提供重启Data Collector功能的对话框。
- 要安装更多的扩展包,只需要点击Cancel,然后重复3-6这几个步骤。
比如说,你想要在Spark Evaluator processor中使用一个扩展包,但是你有两个不同版本的processor(每个版本都有自己独立的库)。为了保证扩展包对两个版本的processor都是可用的,你必须把扩展包分别上传到两个版本对应的的stage库下。
- After installing all of the external libraries that you want, restart the Data Collector in one of the following ways:
- If you started the Data Collector manually from the command line, click Restart Data Collector in the Install External Libraries window.
- If you started the Data Collector as a service, you must use the command line for restart. Click Cancel in the Install External Libraries window, and then run the following command:
service sdc restart
当前开发环境扩展包存放路径:
/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.3.0/streamsets-libs/streamsets-datacollector-basic-lib/lib/streamsets-extra-1.0-SNAPSHOT.jar
/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.3.0/streamsets-libs-extras/streamsets-datacollector-basic-lib/lib/streamsets-extra-1.0-SNAPSHOT.jar
如果配置的路径和文件上传路径不一致时候,以配置路径为准。
javascript调用外部的java代码
网页链接地址:https://streamsets.com/blog/calling-external-java-code-script-evaluators/
// Only need single SHA3, Hex instances
if (!state.sha3 || !state.Hex) {
var DigestSHA3 = Java.type('org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3');
state.sha3 = new DigestSHA3(256);
state.Hex = Java.type('org.bouncycastle.util.encoders.Hex');
}
var sha3 = state.sha3;
var Hex = state.Hex;
for(var i = 0; i < records.length; i++) {
var record = records[i];
try {
// Need to reset the message digest object for every field!
sha3.reset();
var digest = sha3.digest(record.value['data'].getBytes('UTF-8'));
record.value.digest = Hex.toHexString(digest);
output.write(record);
} catch (e) {
// Send record to error
error.write(record, e);
}
}