我正在尝试更改数据帧的模式。每次我有一个字符串类型的列时,我想把它的类型改为VarcharType( max ),其中max是该列中字符串的最大长度。我写了下面的代码。(我想稍后将数据帧导出到sql server,并且我不想让nvarchar出现在sql server中,所以我尝试将其限制在spark端) val df = spark.sql(s"SELECT * FROM $tableName")
var l : List [StructField] = List()
val schema = df.schema
schema.fields.foreach(x =>
Spark版本: 1.3
在处理BigInteger类型数据时,我有一个要求。Bean类(Pojo)使用的BigInteger数据类型很少。解析数据并创建JavaRDD可以很好地工作,但是当创建一个以JavaRDD和BeanClass为参数的数据帧时,Spark抛出下面的异常。
scala.MatchError: class java.math.BigInteger (of class java.lang.Class)
at org.apache.spark.sql.SQLContext$$anonfun$getSchema$1.apply(SQLContext.scala:1
我使用StructType定义了一个模式,用于读取Redsfhit中的数据帧。该表具有350+列,其中许多列被配置为布尔值。
从该表中卸载数据后,我尝试使用我创建的Schema读取数据。但是我希望读取的每个BooleanType列都有"f“/ "t”值。这会导致解析异常。例外情况是:
java.lang.IllegalArgumentException: For input string: "f"
at scala.collection.immutable.StringLike$class.parseBoolean(StringLike.scala:290)
a
我正在使用case类和spark.sql({query}).as[MyCaseClass]语法在scala中创建Spark
在我尝试用定义为Array[Array[Byte]]的一个成员创建数据集之前,一切都很好。
case class HbaseRow(
ip: Array[Array[Byte]]
)
val hbaseDataSet = spark
.sql("""select ip from test_data""")
.as[HbaseRow]
通常情况下,这很好,但是对于字节数组,这是失败的。
java.lang.C
在Spark 2.11中,当将Dataframe转换为Dataset时,spark会保留甚至在dataset的类中都没有引用的额外列。 scala> case class F(x: String, y: String)
defined class F
scala> import spark.implicits._
import spark.implicits._
scala> val df = Seq(("1a","2a","3a","4a"), ("5a", "6a", &
我知道使用.withColumn()向星火.withColumn()添加新列的方法,以及返回DataFrame的UDF。我还知道,我们可以将结果DataFrame转换为DataSet。
我的问题是:
如果我们仍然遵循传统的DF方法(即将列名作为UDF输入的字符串传递),DataSet的类型安全性是如何发挥作用的?
是否有一种“面向对象的方式”来访问列(而不是将列名作为字符串传递),就像我们以前使用RDD那样,用于追加一个新列。
如何在地图、过滤器等正常操作中访问新列?
例如:
scala> case class Temp(a : Int, b : String
我对Scala编程很陌生,并且正在使用IntelliJ IDE。当我运行Scala示例代码时,会得到以下异常。不确定我是否失去了任何依赖。
样本代码
package com.assessments.example
object Example extends App {
//Create a spark context, using a local master so Spark runs on the local machine
val spark = SparkSession.builder().master("local[*]").appName("
在spark (如 )中,有许多方法来验证两个数据帧的架构。但是我只想在SQL中验证两个数据帧的模式,我指的是SparkSQL。
示例查询1:
SELECT DISTINCT target_person FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='ad_facebook'
示例查询2:
SELECT count(*) FROM information_schema.columns WHERE table_n
我正在创建一个新的dataframe (由case类设置),它的输入dataframe的列数可能比现有的要少/不同。我正在尝试使用case类将不存在的值设置为null。 我使用这个case类来驱动要创建的新数据帧。 输入数据帧(incomingDf)可能没有上面设置为null的所有变量字段。 case class existingSchema(source_key: Int
, sequence_number: Int
, subscriber_id: String
我需要在spark中根据给定比率使用scala拆分一个数据帧。这应该通过一个名为ts的特定列在dataframe的排序版本上完成。第一个比率用于训练,最后一个部分将用于验证。
val dataframe=//a sample dataframe
val trainRatio=0.8;
val training=//dataframe.rdd.orderBy("ts")
val test=//
有人能给我一些提示吗?
我是scala和spark的新手,在尝试从一些玩具数据帧中学习时遇到了一个问题。 我有一个数据帧,它有以下两列: Name_Description Grade Name_Description是一个数组,而Grade只是一个字母。我对Name_Description有意见。在Spark上使用scala时,我正在尝试更改这一列。 名称描述不是固定大小的数组。它可能是这样的 'asdf_ Brandon','Ca%abc%rd‘ 唯一的问题是: 1. the first element of the array ALWAYS has 6 garbage
我有一个简单的spark作业,它从文件中拆分单词并加载到hive中的表中。
public static void wordCountJava7() {
// Define a configuration to use to interact with Spark
SparkConf conf = new SparkConf().setMaster("local[4]").setAppName("Work Count App");
SparkContext sc = new SparkContext(conf);
// Crea
我试图在intellij idea中实现case类,我得到了以下错误。你能帮我解决这个问题吗?
代码:
val conf = new SparkConf().setMaster("local").setAppName("case class")
val sc = new SparkContext(conf)
case class Employee (empno: String, ename: String, job: String, mgr: String,
hiredate: String, sal: String, comm: St