小编Ben*_*man的帖子

处理 Spark 中的架构不匹配

我正在 Scala 中使用 Spark 读取 csv 文件。该架构是预定义的,我正在使用它来阅读。这是示例代码:

// create the schema
val schema= StructType(Array(
      StructField("col1", IntegerType,false),
      StructField("col2", StringType,false),
      StructField("col3", StringType,true)))

// Initialize Spark session
val spark: SparkSession = SparkSession.builder
    .appName("Parquet Converter")
    .getOrCreate

// Create a data frame from a csv file
val dataFrame: DataFrame =
spark.read.format("csv").schema(schema).option("header", false).load(inputCsvPath)
Run Code Online (Sandbox Code Playgroud)

根据我在使用 Spark 使用模式阅读 cav 时所读到的内容,有 3 个选项:

  1. 将模式设置为DROPMALFORMED--> 这将删除与模式不匹配的行
  2. 将模式设置为PERMISSIVE--> 这会将整行设置为空值
  3. 将模式设置为FAILFAST--> 当发现不匹配时,这将引发异常

组合选项的最佳方式是什么?我想要的行为是获取架构中的不匹配项,将它们打印为错误并忽略数据框中的行。基本上,我想要 FAILFAST 和 DROPMALFORMED 的组合。

提前致谢

scala apache-spark

5
推荐指数
1
解决办法
7928
查看次数

如何从Perl调用Java程序?

我是Perl的新手,我正在尝试做一些事情而无法找到答案.

我创建了一个Java项目,其中包含一个获取多个输入参数的主类.

我想用Perl包装我的Java:我想创建一个获取输入参数的Perl脚本,然后将它们传递给Java程序,然后运行它.

例如:

如果我的主叫mymain,我这样称呼它:mymain 3 4 hi(3,4并且hi是输入参数),我想创建一个名为Perl程序myperl,当它被调用作为myperl 3 4 hi将传递参数给Java程序并运行它.

我怎样才能做到这一点?

java perl

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

标签 统计

apache-spark ×1

java ×1

perl ×1

scala ×1