我已经在本地机器(Windows)上使用DirectRunner
尝试了SortValues转换的示例代码
PCollection<KV<String, KV<String, Integer>>> input = ...
PCollection<KV<String, Iterable<KV<String, Integer>>>> grouped =
input.apply(GroupByKey.<String, KV<String, Integer>>create());
PCollection<KV<String, Iterable<KV<String, Integer>>>> groupedAndSorted =
grouped.apply(SortValues.<String, String, Integer>create(BufferedExternalSorter.options()));
但是我得到了错误PipelineExecutionException: java.lang.NoClassDefFoundError: org/apache/hadoop/io/Writable
。这是否意味着这个转换函数只在Hadoop环境中工作?
2条答案
按热度按时间m4pnthwp1#
到目前为止,如果您使用的是发布版本低于2.0.0的Beam,那么您必须在maven pom文件中添加两个hadoop依赖项,才能使SortValues模块正常工作。
1.添加
hadoop-common
版本2.7.3或更高版本1.添加
hadoop-mapreduce-client-core
版本2.7.3或更高版本。否则,您只需要使用发布版本〉= 2.0.0的Beam。
xytpbqjk2#
我使用的是beam 2.34.0版本,在本地我必须添加以上两个依赖项&本地排序工作。但如果我在任何环境中添加,它开始打破其他现有的管道与错误异常在主要。