Apache Spark :org.apache.spark.sql.Dataset.drop(String... colNames) 方法用于 Java

Posted

技术标签:

【中文标题】Apache Spark :org.apache.spark.sql.Dataset.drop(String... colNames) 方法用于 Java【英文标题】:Apache Spark :org.apache.spark.sql.Dataset.drop(String... colNames) method for Java 【发布时间】:2018-04-25 05:30:33 【问题描述】:

我有两个表,有两个公共列。 我正在使用这些列进行连接。 现在我想从其中一个表中删除常用列。 查了API,发现Spark里面有很多重载的方法。

其中一个是:org.apache.spark.sql.Dataset.drop(String... colNames)

但是我的问题是如何指定要从中删除列的表名。有什么办法吗?

我搜索并发现有一些别名的概念,但我不确定如何将其应用于此方法。

【问题讨论】:

【参考方案1】:

我发现有几种方法:

1) 在加入前重命名列。

2) 在一个类型中删除一列

ex. `df1.drop(df2.col("ACCT_NBR"));`

通过上面的表达式,我们得到 DF 作为返回类型,我们可以再次调用 drop 函数多次。

这解决了我的问题。

【讨论】:

【参考方案2】:

您需要创建表的Dataframe/Dataset,然后使用.drop()

Dataset<Row> sa = spark.read().option("multiLine", true).option("mode", "PERMISSIVE").json("file-path");
sa.drop("col-name");

【讨论】:

以上是关于Apache Spark :org.apache.spark.sql.Dataset.drop(String... colNames) 方法用于 Java的主要内容,如果未能解决你的问题,请参考以下文章

Driver stacktrace: at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGSchedul(

org.apache.spark.SparkException:任务不可序列化(由 org.apache.hadoop.conf.Configuration 引起)

Apache Spark :org.apache.spark.sql.Dataset.drop(String... colNames) 方法用于 Java

Spark 错误 - 值文本文件不是 org.apache.spark.sparkcontext 的成员

org.apache.spark.SparkException:任务不可序列化 java

调用 saveAsTable 时出现 org.apache.spark.sql.AnalysisException