英文:
How to get index/position of column in dataframe (Spark sql Java)
问题
使用Spark Java(不是Scala或Python)。
我需要更改我的代码,使我的Spark查询选择所有列而不是特定的一组列(就像使用select *
一样)。以前,当我有一组特定的列时,我很容易知道每个列的确切位置/索引,因为它们按照我的选择顺序排列。然而,由于现在我选择了所有列,我不知道确切的顺序。
我需要特定列的位置/索引,以便我可以使用函数.isNullAt()
,因为它需要位置/索引而不是字符串列名。
我想知道是否使用dataframe.columns()
会给我一个数组,其中我可以使用与需要索引/位置的数据框方法相同的索引/位置。然后,我可以使用我的字符串列名搜索数组,以获取正确的索引?
英文:
I am using Spark Java (not scala, python).
I have to change my code so that my spark query will select all columns rather than a specific set of columns. (Like using select *
). Before when I had a specific set of columns, it is easy for me to know the exact position/index of each column because it is in the order of my select. However, since I am now selecting all, I do not know the order exactly.
I need the position/index of particular columns so that I can use the function .isNullAt()
because it requires position/index and not the string column name.
I am wondering does using dataframe.columns()
give me an array which the exact same index/position I can use for the dataframe methods that require an index/position? And then I can search the array using my string column name to get back the correct index?
答案1
得分: 0
从你的问题中,我猜测你正在尝试获取行中字段的索引,以便检查是否为空。
你可以使用ds.columns()
,因为它会给你有序的列,然后使用这里的索引。
然而,我建议使用另一种方法,因为这样可以将逻辑保持在行处理内,更加健壮。你可以使用.fieldIndex(String fieldName)
方法:
row.isNullAt(row.fieldIndex("my_column_name"))
英文:
From your question I'm guessing you're trying to get the index of a field in a row so you can check nullity.
Indeed you could use ds.columns()
as it will give you the ordered columns and then use the index from here.
Nevertheless, I would advice to use another method though as you keep the logic inside row processing and it will be more robust. You can use .fieldIndex(String fieldName)
row.isNullAt(row.fieldIndex("my_column_name"))
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论