如何获取数据帧中列的索引/位置(Spark sql Java)

How to get index/position of column in dataframe (Spark sql Java)

提问人:chingu 提问时间:7/11/2023 更新时间:7/11/2023 访问量:90

问:

我正在使用 Spark Java(不是 scala、python)。

我必须更改我的代码,以便我的 spark 查询将选择所有列,而不是一组特定的列。(喜欢使用 )。以前,当我有一组特定的列时,我很容易知道每列的确切位置/索引,因为它是按照我选择的顺序排列的。但是,由于我现在选择所有,因此我不知道确切的顺序。select *

我需要特定列的位置/索引,以便我可以使用该函数,因为它需要位置/索引而不是字符串列名。.isNullAt()

我想知道使用是否给了我一个数组,该数组与我可以用于需要索引/位置的数据帧方法完全相同的索引/位置?然后我可以使用我的字符串列名搜索数组以获取正确的索引?dataframe.columns()

java apache-spark apache-spark-sql spark-java

评论

0赞 Alias Cartellano 7/11/2023
尝试查看基于列索引的 Spark Dataframe 选择

答:

0赞 Medzila 7/11/2023 #1

从您的问题中,我猜您正在尝试获取一行字段的索引,以便您可以检查无效性。

事实上,您可以使用它,因为它会为您提供有序列,然后从这里使用索引。ds.columns()

尽管如此,我还是建议使用另一种方法,因为您将逻辑保留在行处理中,并且它会更加健壮。你可以使用.fieldIndex(String fieldName)

row.isNullAt(row.fieldIndex("my_column_name"))

查看更多 https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Row.html#fieldIndex(java.lang.String)