Tworzę iskrę Dataframe z pliku CSV i spróbuj wstawić go do tabeli RDBMS o kolumnach integer i Varchar. Ponieważ mój dataframe jest cały ciąg ciągłym, a jego niedobór w trybie "Dołącz". Jeśli używam trybu nadpisywania, Tabela RDBMS zostanie odtworzony ze wszystkimi kolumnami Varchar. Jak mogę wstawić dane do tabeli RDBMS w trybie dołączenia, obsługując Dataype w iskry Dataframe?

0
Despicable me 25 lipiec 2020, 18:33

1 odpowiedź

Najlepsza odpowiedź

Podczas czytania CSV możesz albo inferschema lub określić schemat programowo.

val diamonds = sqlContext.read.format("csv")
      .option("delimiter"," ").option("quote","")
      .option("header", "true")
      .option("inferSchema", "true")
      .load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv");

import org.apache.spark.sql.types._

val customSchema = new StructType()
  .add("_c0",IntegerType,true)
  .add("carat",DoubleType,true)
  .add("cut",StringType,true)
  .add("color",StringType,true)
  .add("clarity",StringType,true)
  .add("depth",DoubleType,true)
  .add("table",DoubleType,true)
  .add("price",IntegerType,true)
  .add("x",DoubleType,true)
  .add("y",DoubleType,true)
  .add("z",DoubleType,true)
    
    val diamonds_with_schema = spark.read.format("csv")
    .option("header", "true")
    .schema(customSchema)
    .load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv");

Po uzyskaniu tego dataframe z wymaganym schematem możesz dołączyć do istniejącej tabeli.

Sprawdź: https://docs.databricks.com/data/data -Sources / read-csv.html

1
dassum 25 lipiec 2020, 15:54