亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Apache Beam 管道從 csv 文件讀取、拆分、groupbyKey 并寫入文本文件時出現

Apache Beam 管道從 csv 文件讀取、拆分、groupbyKey 并寫入文本文件時出現

胡說叔叔 2021-12-01 15:30:23
我的輸入數據如下所示:id,vin,url,exteriorColor,interiorColor,design,transmission,lastcrawled,mileage,price,certified,dealerId,historyType,MSRP114722309,19XVC2F35PR012846,http://www.pohankaacura.com/auto/used-2017-acura-ilx-chantilly-va-near-buckeystown-md/24742881/,Modern Steel,graystone,0,8-Speed Dual-Clutch,2018-02-05 01:49:47 UTC,1646,22550,0,28453我想構建一個 Beam 管道,它將從 csv 文件中讀取這些數據,獲取 vin 并計算 vin 在文件中出現的次數。所以我想按 vin 分組并計算計數。我希望我的最終輸出在一個平面文件中。我錯過了注釋,所以我現在已經添加了它,但是我得到了一個不同的錯誤,我在這里也找不到解決方案。下面是我的代碼。import org.apache.beam.sdk.Pipeline;import org.apache.beam.sdk.io.TextIO;import org.apache.beam.sdk.options.PipelineOptions;import org.apache.beam.sdk.options.PipelineOptionsFactory;import org.apache.beam.sdk.transforms.*;import org.apache.beam.sdk.values.KV;public class p1 {    public static void main(String[] args) {        PipelineOptions options = PipelineOptionsFactory.create();        Pipeline p = Pipeline.create(options);        p.apply(TextIO.read().from("~/slow_storage_drive/beam_test_files/one_vin.csv"))                .apply("Parse&ConvertToKV", MapElements.via(                        new SimpleFunction<String, KV<String, Integer>>() {                            public KV<String, Integer> apply(String input){                                String[] split = input.split(",");                                String key = split[1];                                Integer value = 1;                                return KV.of(key, value);                            }                        }                ))我嘗試使用以下命令運行程序:mvn compile -X exec:java -Dexec.mainClass=p1 -Pdirect-runner我收到以下錯誤:[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project emr_beam_test: An exception occured while executing the Java class. java.lang.IllegalStateException: Invisible parameter type of p1$2 arg0 for public p1$2$DoFnInvoker(p1$2) -> [Help 1]我無法理解我做錯了什么。誰能幫幫我嗎?
查看完整描述

2 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

您必須使用 @ProcessElement 批注來批注匿名類方法 processElement。

更多注解信息請參考https://beam.apache.org/releases/javadoc/2.5.0/org/apache/beam/sdk/transforms/DoFn.ProcessElement.html


查看完整回答
反對 回復 2021-12-01
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

似乎我收到了不可見參數類型異常,因為 Apache Beam 尚不支持 Java 10。我將我的 JAVA_HOME 改為指向 Java 8,程序運行了。我從這個線程中得到了這個想法:Apache Beam: Invisible parameter type exception


查看完整回答
反對 回復 2021-12-01
  • 2 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號