Добавьте пустой столбец между ними при выборе столбцов в кадре данных (Spark) - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь добавить пустой столбец между двумя столбцами в операторе выбора данных.

Используя функцию withColumn, я могу добавить только конечный столбец, но мне нужен пустой столбец в середине (3-й столбец и 6-й столбец), как показано ниже.

val product1 = product.select("_c1","_c2"," ","_c4", "_c5", "_c5", " ", "c6")

Я пытался использовать withColumn в середине оператора select, как показано ниже, который выдает ошибку:

val product1 = product.select("_c1","_c2",product.withColumn("NewCol",lit(None).cast("string")),"_c4", "_c5", "_c5", " ", "c6")

>error: overloaded method value select with alternatives:
  (col: String,cols: String*)org.apache.spark.sql.DataFrame <and>
  (cols: org.apache.spark.sql.Column*)org.apache.spark.sql.DataFrame
 cannot be applied to (String, String, String, String, String, String, String, String, org.apache.spark.sql.DataFrame, String)

Пожалуйста, дайте мне знать, если есть какие-либо предложения.Спасибо

1 Ответ

1 голос
/ 29 марта 2019

Для выбора столбцов в фреймах данных можно использовать либо строки (имена столбцов), либо столбцы (типа Column) в качестве входных данных. Из документации :

def select(col: String, cols: String*): DataFrame  
Selects a set of columns.
def select(cols: Column*): DataFrame  
Selects a set of column based expressions.

Однако их нельзя смешивать. В этом случае используйте select с типом Column. Чтобы получить столбец с конкретным именем, используйте функцию col или $ (после импорта имплицит искры ).

val spark = SparkSession()....
import spark.implicits._

val product1 = product.select($"_c1", $"_c2", lit(" ").as("newCol1"), $"_c4", $"_c5", $"_c5", lit(" ").as("newCol2"), $"c6")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...