Spark shell:如何在里面复制多行?
Spark shell : How to copy multiline inside?
我有一个 Scala 程序,我想使用 Spark shell 执行,现在当我将粘贴复制到 spark shell 时它不起作用,我必须在里面逐行复制。
我应该如何复制shell里面的所有程序?
谢谢。
只需将您的代码保存到文本文件并在 spark-shell
中使用 :load <path_to_your_script>
我需要你的更多解释。但我猜你正在尝试做类似的事情:
spark.read.parquet(X)
.filter("ll")
.groupBy("iii")
.agg("kkk")
而且它不起作用。
相反,你可以这样做:
spark.read.parquet(X).
filter("ll").
groupBy("iii").
agg("kkk")
把点放在行尾。
希望这就是您要找的。
在spark-shell中,你只需要使用命令“:paste”
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)
| )
我有一个 Scala 程序,我想使用 Spark shell 执行,现在当我将粘贴复制到 spark shell 时它不起作用,我必须在里面逐行复制。
我应该如何复制shell里面的所有程序?
谢谢。
只需将您的代码保存到文本文件并在 spark-shell
中使用:load <path_to_your_script>
我需要你的更多解释。但我猜你正在尝试做类似的事情:
spark.read.parquet(X)
.filter("ll")
.groupBy("iii")
.agg("kkk")
而且它不起作用。 相反,你可以这样做:
spark.read.parquet(X).
filter("ll").
groupBy("iii").
agg("kkk")
把点放在行尾。
希望这就是您要找的。
在spark-shell中,你只需要使用命令“:paste”
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)
| )