小编hba*_*bar的帖子

Apache spark中的数据帧示例 斯卡拉

我试图从两个数据帧中取出样本,其中我需要保持计数的比率.例如

df1.count() = 10
df2.count() = 1000

noOfSamples = 10
Run Code Online (Sandbox Code Playgroud)

我想以这样一种方式对数据进行采样,即每个样本大小为101个样本(1个来自df1,100个来自df2)

现在这样做,

var newSample = df1.sample(true, df1.count() / noOfSamples)
println(newSample.count())
Run Code Online (Sandbox Code Playgroud)

这里的分数意味着什么?它可以大于1吗?我检查这个这个,但没能完全理解它.

无论如何我们还可以指定要采样的行数吗?

sample dataframe apache-spark

21
推荐指数
2
解决办法
4万
查看次数

如何在spark SQL中重命名列名

我有一个带有可配置列名的数据框,例如

Journey channelA channelB channelC
j1      1        0        0
j1      0        1        0
j1      1        0        0
j2      0        0        1 
j2      0        1        0
Run Code Online (Sandbox Code Playgroud)

通过可配置,我的意思是数据帧中可能有'n'个通道.

现在我需要进行转换,我需要找到所有通道的总和

df.groupBy("Journey").agg(sum("channelA"), sum("channelB"), sum("channelC"))
Run Code Online (Sandbox Code Playgroud)

其输出将是:

Journey sum(channelA) sum(channelB) sum(channelC)
j1      2             1             0
j2      0             1             1
Run Code Online (Sandbox Code Playgroud)

现在我想将列名重命名为原始名称,我可以使用

.withColumnRenamed("sum(channelA)", channelA)
Run Code Online (Sandbox Code Playgroud)

但正如我所提到的那样,通道列表是可配置的,我希望通用列重命名语句将所有求和列重命名为原始列名,以获得预期的数据帧:

Journey channelA channelB channelC
j1      2        1             0
j2      0        1             1
Run Code Online (Sandbox Code Playgroud)

任何建议如何处理这个

dataframe apache-spark-sql spark-dataframe

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

read.csv()的输出

我一直在尝试将一个csv加载到R进行一些处理,但是在尝试读取数据本身时我遇到了一个奇怪的问题.

csv没有任何标题,我使用以下简单的代码来读取数据

newClick <- read.csv("test.csv", header = F)
Run Code Online (Sandbox Code Playgroud)

以下是样本数据集:

10000011791441224671,V_Display,exit
10000011951441812316,V_Display,exit
10000013211441319797,V_Display,exit
1000001331441725509,V_Display,exit
10000013681418242863,C_GoogleNonBrand,V_Display,V_Display,V_Display,V_Display,_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,exit
10000014031441295393,V_Display,exit
Run Code Online (Sandbox Code Playgroud)

该数据的输出是6 obs的预期数据帧.18个变量.

然而,这是棘手的部分.如果我在数据集中添加另一行,例如

10000011791441224671,V_Display,exit
10000011951441812316,V_Display,exit
1000000191441228436,V_Display,exit
10000013211441319797,V_Display,exit
1000001331441725509,V_Display,exit
10000013681418242863,C_GoogleNonBrand,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,V_Display,exit
10000014031441295393,V_Display,exit
Run Code Online (Sandbox Code Playgroud)

这个输出是一个奇怪的12个3个变量.仔细分析后,我意识到整个倒数第二行被分为6行,每行有三列,这很奇怪.

有什么想法吗?

csv r

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

apache spark hive中Drop表查询的ClassCastException

我正在使用以下配置单元查询:

this.queryExecutor.executeQuery("Drop table user")
Run Code Online (Sandbox Code Playgroud)

并得到以下异常:

java.lang.LinkageError: ClassCastException: attempting to castjar:file:/usr/hdp/2.4.2.0-258/spark/lib/spark-assembly-1.6.1.2.4.2.0-258-hadoop2.7.1.2.4.2.0-258.jar!/javax/ws/rs/ext/RuntimeDelegate.classtojar:file:/usr/hdp/2.4.2.0-258/spark/lib/spark-assembly-1.6.1.2.4.2.0-258-hadoop2.7.1.2.4.2.0-258.jar!/javax/ws/rs/ext/RuntimeDelegate.class
at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:116)
    at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:91)
    at javax.ws.rs.core.MediaType.<clinit>(MediaType.java:44)
    at com.sun.jersey.core.header.MediaTypes.<clinit>(MediaTypes.java:64)
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:182)
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:175)
    at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:162)
    at com.sun.jersey.api.client.Client.init(Client.java:342)
    at com.sun.jersey.api.client.Client.access$000(Client.java:118)
    at com.sun.jersey.api.client.Client$1.f(Client.java:191)
    at com.sun.jersey.api.client.Client$1.f(Client.java:187)
    at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
    at com.sun.jersey.api.client.Client.<init>(Client.java:187)
    at com.sun.jersey.api.client.Client.<init>(Client.java:170)
    at org.apache.hadoop.yarn.client.api.impl.TimelineClientImpl.serviceInit(TimelineClientImpl.java:340)
    at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
    at org.apache.hadoop.hive.ql.hooks.ATSHook.<init>(ATSHook.java:67)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.hadoop.hive.ql.hooks.HookUtils.getHooks(HookUtils.java:60)
    at org.apache.hadoop.hive.ql.Driver.getHooks(Driver.java:1309)
    at org.apache.hadoop.hive.ql.Driver.getHooks(Driver.java:1293)
    at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1347)
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1195)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
    at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$runHive$1.apply(ClientWrapper.scala:495)
    at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$runHive$1.apply(ClientWrapper.scala:484)
    at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$withHiveState$1.apply(ClientWrapper.scala:290)
    at org.apache.spark.sql.hive.client.ClientWrapper.liftedTree1$1(ClientWrapper.scala:237)
    at org.apache.spark.sql.hive.client.ClientWrapper.retryLocked(ClientWrapper.scala:236)
    at …
Run Code Online (Sandbox Code Playgroud)

hadoop hive apache-spark-sql

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

如何在spark-sql中的where子句中使用列表

我有以下格式的数据:

df
uid String event
a   djsan  C
a   fbja   V
a   kakal  Conversion
b   jshaj  V
b   jjsop  C
c   dqjka  V
c   kjkk   Conversion
Run Code Online (Sandbox Code Playgroud)

我需要提取事件为转换的用户的所有行,因此预期结果应该是:

uid String event
a   djsan  C
a   fbja   V
a   kakal  Conversion
c   dqjka  V
c   kjkk   Conversion
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Spark-sql 来实现同样的目的。我试图使用以下形式的简单子查询

Select * from df where uid in (Select uid from df where event = 'Conversion')
Run Code Online (Sandbox Code Playgroud)

但这给了我一个例外。

我还想看看我是否有 uid 的列表对象,我可以在 SQL 语句中使用它吗?如果是,如何使用?

list : List[String] = List('a','c')
Run Code Online (Sandbox Code Playgroud)

sql apache-spark-sql

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

如何使用spark中的窗口函数过滤数据

我有以下数据:

rowid uid time code
   1  1      5    a
   2  1      6    b
   3  1      7    c
   4  2      8    a
   5  2      9    c
   6  2      9    c
   7  2     10    c
   8  2     11    a
   9  2     12    c
Run Code Online (Sandbox Code Playgroud)

现在我想以这样的方式过滤数据:我可以删除第6行和第7行,就像特定的uid一样,我希望在代码中只保留一行值为'c'的行

所以预期的数据应该是:

rowid uid time code
   1  1      5    a
   2  1      6    b
   3  1      7    c
   4  2      8    a
   5  2      9    c
   8  2     11    a
   9  2     12    c
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的窗口函数:

val window = Window.partitionBy("uid").orderBy("time") …
Run Code Online (Sandbox Code Playgroud)

scala window-functions apache-spark spark-dataframe

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

如何在apache spark中展平数据框架 斯卡拉

我有以下数据框:

DF1

uid  text  frequency
1    a     1
1    b     0
1    c     2
2    a     0
2    b     0
2    c     1
Run Code Online (Sandbox Code Playgroud)

我需要在uid的基础上压扁它:

DF2

uid  a  b  c
1    1  0  2
2    0  0  1
Run Code Online (Sandbox Code Playgroud)

我在R中使用了类似的行,但还是无法将其转换为sql或scala.

有关如何处理此问题的任何建议?

scala dataframe apache-spark apache-spark-sql

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

如何根据R中的过滤器计算记录数

我需要根据我需要在组上应用的过滤操作来计算组中的记录数

DF

id dg cs
1  s  1
1  v  0
2  s  0
2  v  1
2  s  1
2  s  0
3  s  1
3  s  1
3  v  1
Run Code Online (Sandbox Code Playgroud)

我需要计算(或标记)"dg"中"v"之前"dg-cs"字段中出现's-1'组合的记录数.

因此,输出将是

id dg cs output
1  s  1  True
1  v  0  False
2  s  0  False
2  v  1  False
2  s  1  False
2  s  0  False
3  s  1  True
3  s  1  True
3  v  1  False
Run Code Online (Sandbox Code Playgroud)

r dplyr

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