小编Nar*_*ren的帖子

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万
查看次数

使用火花流从流数据构建图形

我是新来的火花.我需要构建一个共现图(在推文中将成为节点,如果这些单词来自同一条推文,我们在它们之间添加了一条边),来自Twitter推文等流媒体数据.我们可以使用火花流来构建实时共现的twitter图.火花流是否适用于此用例?我不确定是否可以使用火花流完成.如果不是什么选择?

apache-spark spark-streaming

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

Spark Streaming中的批量大小

我是Spark和Spark Streaming的新手.我正在研究Twitter流媒体数据.我的任务涉及独立处理每个推文,比如计算每条推文中的单词数量.根据我的阅读,每个输入批处理在Spark Streaming中的RDD上形成.因此,如果我给出2秒的批处理间隔,则新的RDD包含所有推文两秒钟,并且所应用的任何转换将应用于整个两秒数据,并且在该两秒内无法处理单个推文.我的理解是否正确?或者每条推文形成一个新的RDD?我有点困惑......

twitter scala twitter4j apache-spark spark-streaming

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

价值|| 不是String - scala的成员

我正在使用字符串过滤功能:

val strings = List("hi","I","am","here") //this list is a stream of words from Twitter
val mystrings = strings.filter(word => !word.contains("I" || "sam") // I need filter out certain stop words
Run Code Online (Sandbox Code Playgroud)

过滤某些单词.但我得到编译错误说 - 值||不是成员String.谁能告诉我哪里出错了?

scala

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

如何在Spark中使用Scala将RDD映射到另一个RDD?

我有一个RDD:

RDD1 = (big,data), (apache,spark), (scala,language) ... 
Run Code Online (Sandbox Code Playgroud)

我需要用时间戳映射它

RDD2 = ('2015-01-01 13.00.00')
Run Code Online (Sandbox Code Playgroud)

所以我得到了

RDD3 = (big, data, 2015-01-01 13.00.00), (apache, spark, 2015-01-01 13.00.00), (scala, language, 2015-01-01 13.00.00)
Run Code Online (Sandbox Code Playgroud)

我为此写了一个简单的map函数:

RDD3 = RDD1.map(rdd => (rdd, RDD2))
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我认为这不是可行的方法.怎么做?我是Scala和Spark的新手.谢谢.

scala apache-spark

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