火花壳:如何在里面复制多行?



我有一个想使用 Spark shell 执行的 Scala 程序,现在当我将粘贴复制到 Spark shell 中时它不起作用,我必须在里面逐行复制。

我应该如何复制外壳内的所有程序?

谢谢。

在 Spark-shell 中,你只需要使用命令 ":p aste">

scala> :paste
// Entering paste mode (ctrl-D to finish)
val empsalary = Seq(
Salary("sales", 1, 5000),
Salary("personnel", 2, 3900),
Salary("sales", 3, 4800),
Salary("sales", 4, 4800),
Salary("personnel", 5, 3500),
Salary("develop", 7, 4200),
Salary("develop", 8, 6000),
Salary("develop", 9, 4500),
Salary("develop", 10, 5200),
Salary("develop", 11, 5200))
.toDS.toDF

然后使用 ctrl-D 退出此模式。您可以看到输出:

// Exiting paste mode, now interpreting.
empsalary: org.apache.spark.sql.DataFrame = [depName: string, empNo: bigint ... 1 more field]

在 Spark shell 中,您可以将多行 Spark 代码包装在括号中以执行代码。括在括号中将允许您将多行 Spark 代码复制到 shell 中或逐行编写多行代码。有关用法,请参阅以下示例。

scala> val adult_cat_df = (spark.read.format("csv")
|   .option("sep", ",")
|   .option("inferSchema", "true")
|   .option("header", "false")
|   .load("hdfs://…/adult/adult_data.csv")
|   .toDF("age", "workclass", "fnlwgt", "education", "education-num", "marital-status", "occupation", "relationship", "race", "sex", "capital-gain", "capital-loss", "hours-per-week", "native-country", "class")
|   .drop("fnlwgt", "education-num", "capital-gain", "capital-loss")
| )
scala> val clean_df = (adult_cat_df.dropDuplicates
|   .na.replace("*", Map("?" -> null))
|   .na.drop(minNonNulls = 9)
| )

我需要你更多的解释。但我想你正在尝试做这样的事情:

spark.read.parquet(X)
.filter("ll")
.groupBy("iii")
.agg("kkk")

而且它不起作用。 相反,您可以执行以下操作:

spark.read.parquet(X).
filter("ll").
groupBy("iii").
agg("kkk")

将点放在行尾。

我希望这是你要找的。

只需将代码保存到文本文件并在Spark-shell中使用:load <path_to_your_script>

相关内容

  • 没有找到相关文章

最新更新