Прежде всего, начиная с Spark 2.0, настоятельно рекомендуется придерживаться SparkSQL, если вам не требуется низкоуровневый доступ к СДР.Это не ваш случай, поэтому не стесняйтесь забывать RDD на время обучения.
То, чего вы пытаетесь достичь, можно сделать несколькими способами.Предположим, у TSV есть строка заголовка, или вы можете присвоить имена столбцу.Используйте средство чтения формата CSV и просто используйте \t
в качестве разделителя:
val all = spark.read
.format("csv")
.option("header", "true")
.option("delimiter", "\t")
.option("inferSchema", "true")
.load("file.tsv")
Далее предположим, left
- это имя столбца 994, center
- это имя столбца 995 и right
это имя столбца 996.
val left = all.filter(col("center").isNull)
val center = all.filter(col("center").isNotNull && col("right").isNull)
val right = all.filter(col("right").isNotNull)