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我该怎么办?
谢谢
在启用慢速查询日志记录的情况下,我们看到很多COMMITs在我们的生产数据库上需要多秒才能完成.在调查中,这些通常是简单的事务:获取行,UPDATE行,COMMIT.这些特定事务中的SELECTs和UPDATEs未被记录为慢速.有什么我们可以做的,或者我们可以使用的工具,找出这些缓慢提交的原因?我们正在运行SSD,并且正在流式传输到奴隶,如果这有所不同的话.
我在pyspark上使用SparkSQL将一些PostgreSQL表存储到DataFrames中,然后构建一个查询,根据a start和stoptype类生成几个时间序列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方法?
我是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) 我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多名代表的人应该创建 …
我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,则使用默认值valueyyyy-MM-dd.
该官方Java文档有关谈判MMM的正确的格式解析如月的名字Jan,Dec等等,但它抛出了很多开始的错误java.lang.IllegalArgumentException.文档说明LLL也可以使用,但pyspark不识别它并抛出pyspark.sql.utils.IllegalArgumentException: u'Illegal pattern component: LLL'.
我知道另一个解决方案dateFormat,但这是解析数据的最快方法和最简单的代码.我在这里错过了什么?
为了运行下面的例子你只需要放置test.csv并test.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) pyspark ×3
apache-spark ×2
python ×2
dataframe ×1
java ×1
postgresql ×1
pyspark-sql ×1
python-2.7 ×1
r ×1
speedglm ×1
summary ×1
time-series ×1