小编Adi*_*iel的帖子

聚合函数计算Spark中groupBy的使用情况

我试图在pySpark中的一行代码中进行多个操作,并且不确定这是否适用于我的情况.

我的意图是不必将输出保存为新的数据帧.

我目前的代码很简单:

encodeUDF = udf(encode_time, StringType())
new_log_df.cache().withColumn('timePeriod', encodeUDF(col('START_TIME')))
  .groupBy('timePeriod')
  .agg(
    mean('DOWNSTREAM_SIZE').alias("Mean"),
    stddev('DOWNSTREAM_SIZE').alias("Stddev")
  )
  .show(20, False)
Run Code Online (Sandbox Code Playgroud)

我的目的是count()在使用之后添加groupBy,以获得与timePeriod列的每个值匹配的记录计数,打印\显示为输出.

在尝试使用时,groupBy(..).count().agg(..)我得到例外.

是否有任何方法可以实现这两个count()agg() .show()打印,而无需将代码拆分为两行命令,例如:

new_log_df.withColumn(..).groupBy(..).count()
new_log_df.withColumn(..).groupBy(..).agg(..).show()
Run Code Online (Sandbox Code Playgroud)

或者更好的是,将合并的输出输出到agg.show()输出 - 一个额外的列,它表示与行的值匹配的计数记录数.例如:

timePeriod | Mean | Stddev | Num Of Records
    X      | 10   |   20   |    315
Run Code Online (Sandbox Code Playgroud)

java scala apache-spark apache-spark-sql pyspark

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

PySpark - 从文本文件创建数据框

我有一个简单的文本文件,其中包含"事务".

第一行是列名,例如"START_TIME","END_TIME","SIZE"......大约有100个列名.

文件中的列名称没有引号.

我想使用Spark,将此文件转换为具有列名称的数据框,

然后从文件中删除所有列但某些特定列.

我在将文本文件转换为数据框时遇到了一些麻烦.

到目前为止,这是我的代码:

from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *

# Load relevant objects
sc = SparkContext('local')
log_txt = sc.textFile("/path/to/text/file.txt")
sqlContext = SQLContext(sc)

# Construct fields with names from the header, for creating a DataFrame
header = log_txt.first()
fields = [StructField(field_name, StringType(), True)
      for field_name in header.split(',')]

# Only columns\fields 2,3,13,92 are relevant. set them to relevant types
fields[2].dataType = TimestampType()    # START_TIME in yyyymmddhhmmss format
fields[3].dataType = TimestampType()    # END_TIME …
Run Code Online (Sandbox Code Playgroud)

python-2.7 apache-spark apache-spark-sql spark-dataframe pyspark-sql

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

编译器如何将unsigned int打印为signed int?

我想弄清楚为什么以下代码:

{
  unsigned int a = 10;
  a = ~a;
  printf("%d\n", a);
}
Run Code Online (Sandbox Code Playgroud)

a00001010开始,并且在NOT opertaion之后,将变换

进入11110101.

当一个人试图打印a为有符号整数时,会发生什么

打印结果是-11

我以为我最终会看到-5可能(根据二进制表示),但不是-11.

我很乐意对此事作出澄清.

c printing unsigned-integer

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

如何在测试集上使用 PCA(代码)

我正在尝试使用 PCA 来选择一些 K 主要组件来使用。

我知道不应在测试集上重新运行 PCA,而应使用在对训练集建模时找到的特征向量 \ PC。

我有 2 个 CSV - 一个是训练集,

另一个测试集(每条记录没有标签)

训练集上的 PCA 过程使用以下代码完成:

# Load CSV file
train_set.init_data <- read.csv("D:\\train.csv", header = TRUE)

# Remove identifier and respone variables (ID, and SalePrice):
train_set.vars <- subset(train_set.init_data, select = -c(Id, SalePrice))

# Convert catergorical variables into numerical using dummy variables:
library(dummies)
train_set.vars_dummy <- dummy.data.frame(train_set.vars, sep = ".")

# Principal Component Analysis:
train_set.prin_comp <- prcomp(train_set.vars_dummy, scale. = T)

# Choose some K components
????

# Run …
Run Code Online (Sandbox Code Playgroud)

r pca

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