小编Utk*_*raf的帖子

如何从csv文件中以自定义格式读取日期?

我正在解析一个包含数据的 csv 文件

03-10-2016,18:00:00,2,6
Run Code Online (Sandbox Code Playgroud)

当我阅读文件创建模式如下

StructType schema = DataTypes.createStructType(Arrays.asList(
                DataTypes.createStructField("Date", DataTypes.DateType, false),
                DataTypes.createStructField("Time", DataTypes.TimestampType, false),
                DataTypes.createStructField("CO(GT)", DataTypes.IntegerType, false),
                DataTypes.createStructField("PT08.S1(CO)", DataTypes.IntegerType, false)))
Dataset<Row> df = spark.read().format("csv").option("Date", "dd-MM-yyyy").schema(schema).load("src/main/resources/AirQualityUCI/sample.csv");
Run Code Online (Sandbox Code Playgroud)

它产生以下错误为

Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.IllegalArgumentException
    at java.sql.Date.valueOf(Unknown Source)
    at org.apache.spark.sql.catalyst.util.DateTimeUtils$.stringToTime(DateTimeUtils.scala:137)
Run Code Online (Sandbox Code Playgroud)

我觉得这是由于日期格式错误。将它们转换成特定格式的方法有哪些?

csv apache-spark apache-spark-sql

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

在 Spark 中使用 Windows 函数进行每周聚合

我有从 2017 年 1 月 1 日到 2017 年 1 月 7 日的数据,这是每周想要的一周汇总数据。我以下列方式使用窗口函数

val df_v_3 = df_v_2.groupBy(window(col("DateTime"), "7 day"))
      .agg(sum("Value") as "aggregate_sum")
      .select("window.start", "window.end", "aggregate_sum")
Run Code Online (Sandbox Code Playgroud)

我在数据框中有数据作为

    DateTime,value
    2017-01-01T00:00:00.000+05:30,1.2
    2017-01-01T00:15:00.000+05:30,1.30
--
    2017-01-07T23:30:00.000+05:30,1.43
    2017-01-07T23:45:00.000+05:30,1.4
Run Code Online (Sandbox Code Playgroud)

我得到的输出为:

2016-12-29T05:30:00.000+05:30,2017-01-05T05:30:00.000+05:30,723.87
2017-01-05T05:30:00.000+05:30,2017-01-12T05:30:00.000+05:30,616.74
Run Code Online (Sandbox Code Playgroud)

它显示我的一天是从 2016 年 12 月 29 日开始,但实际数据是从 2017 年 1 月 1 日开始,为什么会出现这种保证金?

scala dataframe apache-spark spark-graphx

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

Hadoop生态系统中的Avro,镶木地板和SequenceFileFormat位置及其实用程序

我已经看到在导入和存储到HDFS中时使用了不同的文件格式,并且数据处理引擎在执行自己的过程集时也使用了这些格式,因此这些文件格式有何不同,以及如何针对不同的用例进行选择。作为新手会引起混乱,请帮忙。

hadoop hive avro impala parquet

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

Scala Spark 中的日期时间转换(24 小时格式)

我已按以下方式格式化数据帧中的时间戳。

var df_v_5 = df_v_4..withColumn("endTimeFormat", 
from_unixtime(unix_timestamp('DateTime), "dd-MM-yyyy hh:mm:ss"))
Run Code Online (Sandbox Code Playgroud)

我得到的输出为

DateTime,value1,value2,endTimeFormat
2017-01-01T12:00:00.000+05:30,11,-14,01-01-2017 12:00:00
2017-01-01T13:00:00.000+05:30,110,13,01-01-2017 01:00:00
Run Code Online (Sandbox Code Playgroud)

预期输出:

DateTime,value1,value2,endTimeFormat
2017-01-01T12:00:00.000+05:30,11,-14,01-01-2017 12:00:00
2017-01-01T13:00:00.000+05:30,110,13,01-01-2017 13:00:00
Run Code Online (Sandbox Code Playgroud)

如何将此时间戳转换为 24 小时格式?

datetime scala dataframe apache-spark apache-spark-sql

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

将数据帧转换为pyspark中嵌套的json对象数组

我创建了如下数据框:

+----+-------+-------+
| age| number|name   |
+----+-------+-------+
|  16|     12|A      |
|  16|     13|B      |
|  17|     16|E      |
|  17|     17|F      |
+----+-------+-------+
Run Code Online (Sandbox Code Playgroud)

如何将其转换为以下json:

{ 
'age' : 16,  
'values' : [{‘number’: ‘12’ , ‘name’ : 'A'},{‘number’: ‘12’ , ‘name’ : 'A'} ] 
},{ 
'age' : 17,  
'values' : [{‘number’: ‘16’ , ‘name’ : 'E'},{‘number’: ‘17’ , ‘name’ : 'F'} ] 
}
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

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