小编Swa*_*nil的帖子

加载 csv 文件时获取 com.univocity.parsers.common.TextParsingException

我正在尝试将数据中有很多新行的 tsv 数据集加入另一个数据帧并继续获取

com.univocity.parsers.common.TextParsingException

我已经清理了我的数据以用 NA 替换 \N,因为我认为这可能是原因但没有成功。

该错误将我指向错误数据中的以下记录

tt0100054 2 ?????????? ???SUHH RU NA NA 0

堆栈跟踪如下

    19/03/02 17:45:42 ERROR Executor: Exception in task 0.0 in stage 10.0 (TID 10)
com.univocity.parsers.common.TextParsingException: Length of parsed input (1000001) exceeds the maximum number of characters defined in your parser settings (1000000). 
Identified line separator characters in the parsed content. This may be the cause of the error. The line separator in your parser settings is set to '\n'. Parsed content:
    Sesso e …
Run Code Online (Sandbox Code Playgroud)

parsing apache-spark apache-spark-sql univocity

0
推荐指数
1
解决办法
2259
查看次数

替代多个嵌套for和if块

我正在尝试实现一个复杂的块,我使用多个for循环编写,如果条件更复杂的东西.最初的代码是

for(Coll_Monthly_Main monthlyAccount:monthlyList){
        for(Coll_Daily_Main dailyAccount:dailyList){
            if(monthlyAccount.getAccountId().trim().equals(dailyAccount.getAccountId().trim())){
                for(Catg_Monthly monthlyCategory: monthlyAccount.getCatg()){
                    for(Catg_Daily dailyCategory: dailyAccount.getCatg()){
                        if(monthlyCategory.getPriCatId().trim().equals(dailyCategory.getPriCatId().trim())){
                            monthlyCategory.setMthTtl(dailyCategory.getMthTtl());
                            monthlyCategory.setMtd(dailyCategory.getMtd());
                            monthlyCategory.setYtd(dailyCategory.getYtd());

                            for(SecCatDtl_Mthly monthlySecCategory:monthlyCategory.getSecCatDtl()){
                                for(SecCatDtl_Daily dailySecCategory:dailyCategory.getSecCatDtl()){
                                    if(monthlySecCategory.getCatId().trim().equals(dailySecCategory.getCatId().trim())){
                                        monthlySecCategory.setMthTtl(dailySecCategory.getMthTtl());
                                        monthlySecCategory.setMtd(dailySecCategory.getMtd());
                                        monthlySecCategory.setYtd(dailySecCategory.getYtd());
                                    }
                                }
                            }
                        }

                    }
                }
            }
        }
    }
    return monthlyList;
Run Code Online (Sandbox Code Playgroud)

我已经按照这个答案设法实现了第一级如下: -

monthlyList.forEach(coll_mthly->{
        dailyList.stream().filter(coll_daily->coll_mthly.getAccountId().trim().equals(coll_daily.getAccountId().trim()))
        .forEach(catg_mth->coll_mthly.getCatg())->{

        };
    });
Run Code Online (Sandbox Code Playgroud)

对于下一级嵌套,我需要循环嵌套列表,我不知道如何继续它.我不断收到如下语法错误: - 令牌上的语法错误,而不是TypeElidedFormalParameter

我很欣赏正确方向的任何指示.

更新: - 按照托马斯的回答,这就是它的样子

Map<String, Coll_Daily_Main> dailies = dailyList.stream().collect(Collectors.toMap(cdm -> cdm.getAccountId(), cdm-> cdm) );

    for(Coll_Monthly_Main monthlyAccount : monthlyList) {
        Coll_Daily_Main dailiesForAccount  = dailies.get( monthlyAccount.getAccountId().trim());

          Map<String, Catg_Daily> dailyCatgories=dailiesForAccount.getCatg().stream().collect(Collectors.toMap(cv->cv.getPriCatId(), cv->cv));
          for(Catg_Monthly monthlyCategory:monthlyAccount.getCatg()){
              Catg_Daily dailyCategory = …
Run Code Online (Sandbox Code Playgroud)

java foreach nested-loops java-8 java-stream

-1
推荐指数
1
解决办法
382
查看次数