gpt4 book ai didi

java - 在 Apache Spark 中指定运行时依赖性

转载 作者:行者123 更新时间:2023-11-30 08:01:13 27 4
gpt4 key购买 nike

我正在尝试运行一个使用 Apache Tika 提取元数据的简单 Spark 应用程序。我用 Maven 创建了一个阴影 jar,应用程序运行良好,但 Tika 解析器在运行时没有被使用。应用代码如下:

SparkConf sparkConf = new SparkConf();
JavaSparkContext sc = new JavaSparkContext(sparkConf);
if (args.length == 0 || args[0] == null) {
return;
}
JavaPairRDD<String,PortableDataStream> files = sc.binaryFiles(args[0]);
List<Map<String,String>> results = files.map(new Function<Tuple2<String,PortableDataStream>, Map<String,String>>() {

public Map<String,String> call(Tuple2<String, PortableDataStream> stringPortableDataStreamTuple2) throws Exception {
DataInputStream des = stringPortableDataStreamTuple2._2.open();
Tika tika = new Tika();
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler(-1);
String detected = tika.detect(des);
Map<String,String> metadata = new HashMap();
metadata.put("Type", detected);
Metadata tikaMetadata = new Metadata();
parser.parse(des, handler, tikaMetadata, new ParseContext());
String[] names = tikaMetadata.names();
for (String name : names) {
metadata.put(name, tikaMetadata.get(name));
}
return metadata;
}
}).collect();
for (Map<String,String> o : results) {
for (String key : o.keySet()) {
System.out.println(key + " : " + o.get(key));
}
System.out.println();
}
sc.stop();

输出总是这样的:

Type : image/jpeg
X-Parsed-By : org.apache.tika.parser.EmptyParser
Content-Type : application/octet-stream

这表示没有使用 Tika 解析器。根据文档,我可以使用 spark.driver.extraClassPath 属性配置运行时依赖项,因此我将 $SPARK_HOME/conf/spark-defaults.conf.template 文件修改为:

spark.driver.extraClassPath /path/to/tika/jar/tika-app-1.13.jar

还是不行,谁能帮我解释一下为什么?或者,是否有更好的方法来指定运行时依赖项?我目前仅在本地模式下通过 spark-submit 运行应用程序,使用的是 Spark 1.6.1。

最佳答案

您可以在提交申请时使用 --jars 添加依赖 jar,

例如,

./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--executor-memory 20G \
--num-executors 50 \
--jars /path/to/tika/jar/tika-app-1.13.jar \
/path/to/examples.jar

Ways of adding jars for execution

关于java - 在 Apache Spark 中指定运行时依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com