2016-07-18 2 views
0

私は私のデータフレーム上のいくつかの記述統計を取得したい:SparkR - as.doubleでのエラー(X):タイプのベクトルにタイプ「S4」を強要することはできません「ダブル」

# Initialize SparkR Contexts 
    library(SparkR)         # Load library 
    sc <- sparkR.init(master="local[4]")   # Initialize Spark Context 
    sqlContext <- sparkRSQL.init(sc)    # Initialize SQL Context 

# Load data 
df <- loadDF(sqlContext, "/outputs/merged.parquet") # Load data into Data Frame 

# Filter 
df_t1 <- select(filter(df, df$t == 1 & df$totalUsers > 0 & isNotNull(df$domain)), "*") 

avg_df <- collect(agg(groupBy(df_t1, "domain"), AVG=avg(df_t1$totalUsers), STD=sd(df_t1$totalUsers, na.rm = FALSE))) 
head(avg_df) 

私はこれを取得していますエラー:

Error in as.double(x) : 
    cannot coerce type 'S4' to vector of type 'double' 

sd()によって生成されます。私はvar()を使って試して、Error: is.atomic(x) is not TRUEを得ました。ただavg()を使用してもエラーは発生しません。

私は私はいくつかの理由で私のdf_t1$tutoalUsersではなく、二重のベクターの種類S4あるので、私は効果なしでそれをキャストしようとしたことを理解し、これらのパッケージを使用して、そしてthisを読んでおりませんので、私の質問はthis oneとは異なります。

avg_df <- collect(agg(groupBy(df_t1, "domain"),AVG=avg(df_t1$totalUsers), STD=sd(cast(df_t1$totalUsers, "double"),na.rm = FALSE))) 

思考?

編集:スキーマが

> printSchema(df_t1) 
root 
|-- created: integer (nullable = true) 
|-- firstItem: integer (nullable = true) 
|-- domain: string (nullable = true) 
|-- t: integer (nullable = true) 
|-- groupId: string (nullable = true) 
|-- email: integer (nullable = true) 
|-- chat: integer (nullable = true) 

とスパークの私のバージョンあなたは、より高度な統計的な概要を提供していないとあなたが標準Rを使用することはできませんスパーク1.5を使用している1.5.2

答えて

1

ですSpark DataFrameで動作しているときに機能します。 avg()は実際にはSpark 1.5で使用可能なSpark SQL関数なので動作します。

追加の統計的要約は、標準偏差(sdstddevstddev_samp及びstddev_pop)と分散(varvariancevar_sampvar_pop)を計算する方法を含むスパーク1.6で導入されています。もちろん、よく知られた公式を使用して標準偏差を計算することもできます。Calculate the standard deviation of grouped data in a Spark DataFrame

+0

Spark 1.6.2をインストールするとこの問題が解決されます。 Spark 1.6.2の質問に続き、あまりにも多くの時間をかけすぎて実行することに問題があると聞きました。それについての考えはありますか? –

+0

1.5以降、多くのバグ修正がありました。そのため、1.6+は私にとっては嫌なものです。適切に設定されていれば、重要なパフォーマンスの低下は見られません(特定の操作は別の方法でスケジュールされているため、修正する必要があります)。 – zero323

関連する問題