Size: a a a

2019 July 05

G

Gev in Moscow Spark
KrivdaTheTriewe
explain(true)
спс, понял. Ща гляну
источник

G

Gev in Moscow Spark
KrivdaTheTriewe
explain(true)
val res = df_avro1.repartition(1).write.mode("overwrite").format("orc").option("compression", "snappy").save("/data/tmp")
scala> res.explain(true)
<console>:34: error: value explain is not a member of Unit
      res.explain(true)
источник

GP

Grigory Pomadchin in Moscow Spark
Gev
val res = df_avro1.repartition(1).write.mode("overwrite").format("orc").option("compression", "snappy").save("/data/tmp")
scala> res.explain(true)
<console>:34: error: value explain is not a member of Unit
      res.explain(true)
тип не тот, он же пишет; save юнит имеет как ретерн тайп

val res = df_avro1.repartition(1).write.mode("overwrite").format("orc").option("compression", "snappy")

res.explain(true)

res.save("/data/tmp")
источник

GP

Grigory Pomadchin in Moscow Spark
^ но я не помню типов так что это тож может не работать
источник

G

Gev in Moscow Spark
Grigory Pomadchin
тип не тот, он же пишет; save юнит имеет как ретерн тайп

val res = df_avro1.repartition(1).write.mode("overwrite").format("orc").option("compression", "snappy")

res.explain(true)

res.save("/data/tmp")
Ага - не работает
источник

G

Gev in Moscow Spark
Я могу ошибкаться - ain работает только для SQL
источник

AS

Andrey Smirnov in Moscow Spark
df_avro1.printSchema
источник

G

Gev in Moscow Spark
Grigory Pomadchin
Даже не знаю что сказать) что-то не сходится)
ВОТ
Что тут не так
import spark.implicits._
val x1= BigDecimal("1483814124530")
val x2= BigDecimal("1483814124538")
val list = List(("1", x1),("2", x2))
val someDF = spark.createDataFrame(list)

someDF.withColumn("_2",(someDF("_2") /1000).cast("timestamp")).show(10,false)
val dfWrite = someDF.withColumn("_2",(someDF("_2") /1000).cast("timestamp"))
dfWrite.write.mode("overwrite").format("com.databricks.spark.avro").save("/tmp/timestamp_test")
val df_avro = spark.read.format("com.databricks.spark.avro").load("/tmp/timestamp_test")
val df_avro1 = df_avro.withColumn("_2", (df_avro("_2") / 1000).cast("timestamp"))
df_avro1.repartition(1).write.mode("overwrite").format("orc").option("compression", "snappy").save("/tmp/timestamp_test_orc")
val df_orc = spark.read.format("orc").load("/tmp/timestamp_test_orc")

df_avro.withColumn("_2", (df_avro("_2") / 1000).cast("timestamp")).select("*").show(10,false)
df_orc.select("*").show(10,false)
источник

G

Gev in Moscow Spark
scala> df_avro.withColumn("_2", (df_avro("_2") / 1000).cast("timestamp")).select("*").show(10,false)
+---+-----------------------+
|_1 |_2                     |
+---+-----------------------+
|1  |2017-01-07 21:35:24.53 |
|2  |2017-01-07 21:35:24.538|
+---+-----------------------+


scala> df_orc.select("*").show(10,false)
+---+-----------------------+
|_1 |_2                     |
+---+-----------------------+
|1  |2017-01-07 21:35:25.06 |
|2  |2017-01-07 21:35:25.076|
+---+-----------------------+
источник

G

Gev in Moscow Spark
scala> df_avro.printSchema
root
|-- _1: string (nullable = true)
|-- _2: long (nullable = true)
источник

G

Gev in Moscow Spark
scala> df_orc.printSchema
root
|-- _1: string (nullable = true)
|-- _2: timestamp (nullable = true)
источник

G

Gev in Moscow Spark
Мне что то уже не смешно
источник

AS

Andrey Smirnov in Moscow Spark
long (nullable = true)
timestamp (nullable = true)
вот и различие
источник

G

Gev in Moscow Spark
Andrey Smirnov
long (nullable = true)
timestamp (nullable = true)
вот и различие
Так для этого и все это упражнение 😁 конвертирую avro в orc и по ходу конвертирую long в timestamp. Только потом смотрю что записалось в файл. А там не то что было в исходнике.
источник

G

Gev in Moscow Spark
К слову. Формат файла тут не причем. Я проблвал тоже самое с иходным файлом в orc
источник

AA

Aleksandr Aleksandro... in Moscow Spark
Попробуй
spark.sql.orc.impl=hive
источник

G

Gev in Moscow Spark
Aleksandr Aleksandrov
Попробуй
spark.sql.orc.impl=hive
Честно говоря хотелось избежать hive. Мне само поведение такое не понятно. Что может происходить при записи?
источник

AA

Aleksandr Aleksandro... in Moscow Spark
Gev
Честно говоря хотелось избежать hive. Мне само поведение такое не понятно. Что может происходить при записи?
Там баг точно был какой-то в нативном, возможно ты на него попал, можешь тикет найти
источник

G

Gev in Moscow Spark
Aleksandr Aleksandrov
Там баг точно был какой-то в нативном, возможно ты на него попал, можешь тикет найти
Спасибо за наводку. В понедельник попробую.
источник

G

Gev in Moscow Spark
Хотя обидно.
источник