通过在Apache Spark Java中搜索数据集的列标题来查找列索引

时间:2017-04-13 12:38:56

标签: java apache-spark apache-spark-sql apache-spark-dataset

我有一个类似于以下示例的Spark数据集:

       0         1                  2          3
    +------+------------+--------------------+---+
    |ItemID|Manufacturer|       Category     |UPC|
    +------+------------+--------------------+---+
    |   804|         ael|Brush & Broom Han...|123|
    |   805|         ael|Wheel Brush Parts...|124|
    +------+------------+--------------------+---+

我需要通过搜索列标题找到列的位置。

例如:

int position=getColumnPosition("Category");

这应该返回2。

Dataset<Row>数据类型是否支持Spark函数来查找列索引或可以在Spark数据集上运行的任何java函数?

3 个答案:

答案 0 :(得分:10)

您需要访问架构并按如下方式读取字段索引:

int position = df.schema().fieldIndex("Category");

答案 1 :(得分:1)

您可以考虑使用此选项(Scala实现):

def getColumnPosition(dataframe: DataFrame, colName: String): Int = {
    dataframe.columns.indexOf(colName)
}

答案 2 :(得分:1)

我为列表使用了索引属性:

df.columns.index(column_name)