Могу ли я изменить тип данных столбцов данных Spark, которые загружаются в SQL Server в виде таблицы? - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь прочитать файл Parquet из озера данных Azure, используя следующий код Pyspark.

df= sqlContext.read.format("parquet")
   .option("header", "true")
   .option("inferSchema", "true")
   .load("adl://xyz/abc.parquet")
df = df['Id','IsDeleted']

Теперь я хотел бы загрузить этот фрейм данных в виде таблицы в хранилище данных sql, используя следующий код:

df.write \
  .format("com.databricks.spark.sqldw") \
  .mode('overwrite') \
  .option("url", sqlDwUrlSmall) \
  .option("forward_spark_azure_storage_credentials", "true") \
  .option("dbtable", "test111") \
  .option("tempdir", tempDir) \
  .save()

Это создает таблицу dbo.test111 в хранилище данных SQL с типами данных:

  • Идентификатор (NVARCHAR (256), нулевой)
  • IsDeleted (бит, нулевой)

Но мне нужны эти столбцы с разными типами данных, например char (255), varchar (128) в SQL Datawarehouse. Как это сделать при загрузке фрейма данных в хранилище данных SQL?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Даны только поддерживаемые типы данных в Spark SQL. [https://spark.apache.org/docs/1.6.0/api/java/org/apache/spark/sql/types/package-summary.html][1]

Типы строк будут фактически превращены в VARCHAR с неопределенной длиной. Spark SQL не имеет VARCHAR(n) типа данных.

Вы должны быть в состоянии сделать что-то вроде ниже

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

val df = 
          df.withColumn("Id_mod", df.Id.cast(StringType)) 
            .withColumn("IsDeleted_mod", df.IsDeleted.cast(StringType))
            .drop("Id")
            .drop("IsDeleted")
            .withColumnRenamed("Id_mod", "Id")
            .withColumnRenamed("IsDeleted_mod", "IsDeleted")
            //Replace StringType with Any supported desired type
0 голосов
/ 16 января 2019

Я нашел способ, который может помочь вам изменить тип данных столбца, но, возможно, не смог достичь вашего желания.

df.select(col("colname").cast(DataType))

Вот блоб о Как изменить типы столбцов в DataFrame Spark SQL .

Может быть, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...