小编Raj*_*hra的帖子

java.lang.RuntimeException:java.lang.String不是bigint或int模式的有效外部类型

我正在从文本文件中读取数据框架的模式.该文件看起来像

id,1,bigint
price,2,bigint
sqft,3,bigint
zip_id,4,int
name,5,string
Run Code Online (Sandbox Code Playgroud)

我将解析后的数据类型映射到Spark Sql数据类型.创建数据框的代码是 -

var schemaSt = new ListBuffer[(String,String)]()
// read schema from file
for (line <- Source.fromFile("meta.txt").getLines()) {
  val word = line.split(",")
  schemaSt += ((word(0),word(2)))
}

// map datatypes
val types = Map("int" -> IntegerType, "bigint" -> LongType)
      .withDefault(_ => StringType)
val schemaChanged = schemaSt.map(x => (x._1,types(x._2))

// read data source
val lines = spark.sparkContext.textFile("data source path")

val fields = schemaChanged.map(x => StructField(x._1, x._2, nullable = true)).toList

val schema = StructType(fields)

val rowRDD = …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql spark-dataframe

12
推荐指数
2
解决办法
2万
查看次数

如何保护Spark中的密码和用户名(例如用于JDBC连接/访问RDBMS数据库)?

我们有一个用例,需要将数据从HDFS导出到RDBMS。我看到了这个例子。他们在这里将用户名和密码存储在代码中。像我们在Sqoop中选择了password-alias一样,在导出数据时是否有任何隐藏密码的方法。

apache-spark apache-spark-sql

7
推荐指数
1
解决办法
6177
查看次数

实木复合地板架构和Spark

我正在尝试将CS​​V文件转换为镶木地板,并且我正在使用Spark来完成此操作。

SparkSession spark = SparkSession
    .builder()
    .appName(appName)
    .config("spark.master", master)
    .getOrCreate();

Dataset<Row> logFile = spark.read().csv("log_file.csv");
logFile.write().parquet("log_file.parquet");
Run Code Online (Sandbox Code Playgroud)

现在的问题是我没有定义架构,列看起来像这样(输出在spark中使用printSchema()显示)

root
 |-- _c0: string (nullable = true)
 |-- _c1: string (nullable = true)
 |-- _c2: string (nullable = true)
 ....
Run Code Online (Sandbox Code Playgroud)

csv在第一行有名称,但是我想它们被忽略了,问题是只有几列是字符串,我也有整数和日期。

使用Spark,基本上没有Avro或其他任何功能(从未使用过Avro)。

我定义模式有哪些选择?如何选择?如果我需要用其他方式编写镶木地板文件,那么只要它是一种快速简便的解决方案,就没有问题。

(我正在使用Spark Standalone进行测试/不知道Scala)

java scala apache-spark parquet spark-csv

1
推荐指数
1
解决办法
9773
查看次数