小编pie*_*rop的帖子

如何使用scala在spark sql中使用条件时写入case

SELECT c.PROCESS_ID, 
       CASE WHEN c.PAYMODE = 'M' 
           THEN 
               CASE WHEN CURRENCY = 'USD' 
                   THEN c.PREMIUM * c.RATE 
                   ELSE c.PREMIUM END * 12
           ELSE 
               CASE WHEN CURRENCY = 'USD' 
                   THEN c.PREMIUM * c.RATE 
                   ELSE c.PREMIUM END END VAlue
FROM CMM c
Run Code Online (Sandbox Code Playgroud)

我想转换sql查询spark sql api我该怎么办?

谢谢

apache-spark-sql

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

调试慢Postgresql 9.3 COMMIT

在启用慢速查询日志记录的情况下,我们看到很多COMMITs在我们的生产数据库上需要多秒才能完成.在调查中,这些通常是简单的事务:获取行,UPDATE行,COMMIT.这些特定事务中的SELECTs和UPDATEs未被记录为慢速.有什么我们可以做的,或者我们可以使用的工具,找出这些缓慢提交的原因?我们正在运行SSD,并且正在流式传输到奴隶,如果这有所不同的话.

postgresql

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

pyspark上的SparkSQL:如何生成时间序列?

我在pyspark上使用SparkSQL将一些PostgreSQL表存储到DataFrames中,然后构建一个查询,根据a startstoptype类生成几个时间序列date.

假设my_table包含:

 start      | stop       
-------------------------
 2000-01-01 | 2000-01-05 
 2012-03-20 | 2012-03-23 
Run Code Online (Sandbox Code Playgroud)

在PostgreSQL中,这很容易做到:

SELECT generate_series(start, stop, '1 day'::interval)::date AS dt FROM my_table
Run Code Online (Sandbox Code Playgroud)

它会生成这个表:

 dt
------------
 2000-01-01
 2000-01-02
 2000-01-03
 2000-01-04
 2000-01-05
 2012-03-20
 2012-03-21
 2012-03-22
 2012-03-23
Run Code Online (Sandbox Code Playgroud)

但是如何使用普通的SparkSQL呢?是否有必要使用UDF或一些DataFrame方法?

time-series python-2.7 apache-spark-sql pyspark pyspark-sql

9
推荐指数
4
解决办法
4986
查看次数

PySpark:StructField(...,...,False)总是返回`nullable = true`而不是`nullable = false`

我是PySpark的新手,面临一个奇怪的问题.我正在尝试在加载CSV数据集时将某些列设置为不可为空.我可以使用非常小的数据集(test.csv)重现我的情况:

col1,col2,col3
11,12,13
21,22,23
31,32,33
41,42,43
51,,53
Run Code Online (Sandbox Code Playgroud)

在第5行第2列有一个空值,我不想在我的DF中获得该行.我将所有字段设置为非可空(nullable=false)但我得到一个包含所有三列的模式nullable=true.即使我将所有三列都设置为不可为空,也会发生这种情况!我正在运行最新版本的Spark 2.0.1.

这是代码:

from pyspark.sql import SparkSession
from pyspark.sql.functions import *
from pyspark.sql.types import *

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()

struct = StructType([   StructField("col1", StringType(), False), \
                        StructField("col2", StringType(), False), \
                        StructField("col3", StringType(), False) \
                    ])

df = spark.read.load("test.csv", schema=struct, format="csv", header="true")
Run Code Online (Sandbox Code Playgroud)

df.printSchema() 收益:

root
 |-- col1: string (nullable = true)
 |-- col2: string (nullable = …
Run Code Online (Sandbox Code Playgroud)

python apache-spark apache-spark-sql pyspark

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

R - 使用speedglm包中的summary()时出错

speedglm用来估计某些数据的逻辑回归模型.我创建了一个可重现的示例,它会生成与使用原始数据相同的错误.

library(speedglm)
n <- 10000
dtf <- data.frame( y = sample(c(0,1), n, 1),
                  x1 = as.factor(sample(c("a","b"), n, 1)),
                  x2 = rnorm(n, 30, 10))
m <- speedglm(y ~ x1 + x2, dtf, family=binomial())
summary(m)
Run Code Online (Sandbox Code Playgroud)

输出如下:

Generalized Linear Model of class 'speedglm':

Call:  speedglm(formula = y ~ x1 + x2, data = dtf, family = binomial()) 

Coefficients:
 ------------------------------------------------------------------ 
Error in data.frame(..., check.names = FALSE) : 
  arguments imply differing number of rows: 3, 0
Run Code Online (Sandbox Code Playgroud)

summary.speedglm通过执行检查了源代码getS3method("summary", "speedglm")并找到了生成错误的代码行,但它没有帮助解决问题.

PS:有1500多名代表的人应该创建 …

r summary dataframe speedglm

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

对于像1989Dec31和31Dec1989这样的日期,pyspark无法识别spark.read.load()中的MMM dateFormat模式

pyspark 在macOS Sierra上遇到了一个非常奇怪的问题.我的目标是以ddMMMyyyy格式解析日期(例如:),31Dec1989但会收到错误.我运行Spark 2.0.1,Python 2.7.10和Java 1.8.0_101.我也试过使用Anaconda 4.2.0(它附带Python 2.7.12),但也得到了错误.

Ubuntu Server 15.04上具有相同Java版本和Python 2.7.9的相同代码可以正常运行而不会出现任何错误.

关于州的官方文件spark.read.load():

dateFormat - 设置指示日期格式的字符串.自定义日期格式遵循以下格式java.text.SimpleDateFormat.这适用于日期类型.如果设置为None,则使用默认值value yyyy-MM-dd.

官方Java文档有关谈判MMM的正确的格式解析如月的名字Jan,Dec等等,但它抛出了很多开始的错误java.lang.IllegalArgumentException.文档说明LLL也可以使用,但pyspark不识别它并抛出pyspark.sql.utils.IllegalArgumentException: u'Illegal pattern component: LLL'.

我知道另一个解决方案dateFormat,但这是解析数据的最快方法和最简单的代码.我在这里错过了什么?

为了运行下面的例子你只需要放置test.csvtest.py在同一目录下,然后运行<spark-bin-directory>/spark-submit <working-directory>/test.py.

我的测试用例使用ddMMMyyyy格式

我有一个名为test.csv包含以下两行的纯文本文件:

col1
31Dec1989
Run Code Online (Sandbox Code Playgroud)

代码如下:

from pyspark.sql import SparkSession
from pyspark.sql.types import *

spark = …
Run Code Online (Sandbox Code Playgroud)

python java date-formatting apache-spark pyspark

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