小编Sid*_*Sid的帖子

处理Spark Scala中的微秒

我使用Scala将PostgreSQL表导入spark作为数据帧.数据框看起来像

user_id | log_dt  
--------| -------    
96      | 2004-10-19 10:23:54.0    
1020    | 2017-01-12 12:12:14.931652
Run Code Online (Sandbox Code Playgroud)

我正在转换此数据帧以使log_dt的数据格式为yyyy-MM-dd hh:mm:ss.SSSSSS.为了实现这一点,我使用以下代码使用unix_timestamp函数将log_dt转换为时间戳格式.

  val tablereader1=tablereader1Df.withColumn("log_dt",unix_timestamp(tablereader1Df("log_dt"),"yyyy-MM-dd hh:mm:ss.SSSSSS").cast("timestamp"))
Run Code Online (Sandbox Code Playgroud)

当我打印使用命令打印tablereader1数据帧时,tablereader1.show()我得到以下结果

user_id | log_dt  
--------| -------
96      | 2004-10-19 10:23:54.0
1020    | 2017-01-12 12:12:14.0
Run Code Online (Sandbox Code Playgroud)

如何将微秒保留为时间戳的一部分?任何建议表示赞赏.

java datetime scala apache-spark apache-spark-sql

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

在Pyspark中使用IN子句声明的情况

我是Spark编程的新手,有一个场景可以在输入中出现一组值时分配一个值.下面是我将用来完成任务的传统SQL代码.需要在Spark中做同样的事情.

Sql代码:

SELECT CASE WHEN c.Number IN ( '1121231', '31242323' ) THEN 1 
ELSE 2 END AS Test
FROM   Input  c
Run Code Online (Sandbox Code Playgroud)

我知道when在一个条件下使用spark.

Input.select(when(Input.Number==1121231,1).otherwise(2).alias("Test")).show()
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark pyspark-sql

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

将PySpark数据帧列的聚合值存储到变量中

我在这里使用PySpark数据帧."test1"是我的PySpark数据帧,event_date是TimestampType.因此,当我尝试获取event_date的非常计数时,结果是一个整数变量,但是当我尝试获取同一列的最大值时,结果是一个数据帧.我想了解数据框架和变量中的操作结果.我还想知道如何将事件日期的最大值存储为变量

导致整数类型的代码:

loop_cnt=test1.select('event_date').distinct().count()
type(loop_cnt)
Run Code Online (Sandbox Code Playgroud)

导致数据框类型的代码:

last_processed_dt=test1.select([max('event_date')])
type(last_processed_dt)
Run Code Online (Sandbox Code Playgroud)

编辑添加可重现的示例:

schema = StructType([StructField("event_date", TimestampType(), True)])

df = sqlContext.createDataFrame([(datetime(2015, 8, 10, 2, 44, 15),),(datetime(2015, 8, 10, 3, 44, 15),)], schema)
Run Code Online (Sandbox Code Playgroud)

返回数据帧的代码:

last_processed_dt=df.select([max('event_date')])
type(last_processed_dt)
Run Code Online (Sandbox Code Playgroud)

返回变量的代码:

loop_cnt=df.select('event_date').distinct().count()
type(loop_cnt) 
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

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