Gui*_*era 6 apache-spark apache-spark-sql
所以据我所知 Apache Spark 没有模仿更新SQL 命令的功能。就像,我可以在特定条件下更改列中的单个值。解决这个问题的唯一方法是使用我被指示使用的以下命令(在 Stackoverflow 中):withColumn(columnName, where('condition', value));
然而,该条件应的column
类型,这意味着我已经使用内置在柱过滤功能的Apache有(equalTo
,isin
,lt
,gt
,等等)。有没有一种方法可以代替使用 SQL 语句而不是那些内置函数?
问题是我得到了一个包含 SQL 语句的文本文件,例如WHERE ID > 5
orWHERE AGE != 50
等。然后我必须根据这些条件标记值,我想遵循该withColumn()
方法,但我无法在其中插入 SQL 语句功能。知道如何解决这个问题吗?
我找到了解决这个问题的方法:
您想要将数据集分为两组:要更新的值和不想更新的值
Dataset<Row> valuesToUpdate = dataset.filter('conditionToFilterValues');
Dataset<Row> valuesNotToUpdate = dataset.except(valuesToUpdate);
valueToUpdate = valueToUpdate.withColumn('updatedColumn', lit('updateValue'));
Dataset<Row> updatedDataset = valuesNotToUpdate.union(valueToUpdate);
Run Code Online (Sandbox Code Playgroud)
但是,这不会保持与原始数据集相同的记录顺序,因此如果顺序对您很重要,那么这不能满足您的需求。
在 PySpark 中,您必须使用 .subtract 而不是 . except
归档时间: |
|
查看次数: |
7654 次 |
最近记录: |