2017-12-18 6 views
0

"SparkSession DataFrame"を使用してIBM Data Science Experienceに挿入するcsvファイルがあります。 csvファイルのすべてのコンテンツ(ヘッダーを除く)は整数です。「SparkSession DataFrameを挿入してDSXで整数から浮動小数点へデータを自動的に変換」

特定の機械学習モデルかかわらず、期待通りのデータフレームが、私はこのエラーを取得する場所線形回帰分類を作成しようとしてまで働く:

TypeError: Cannot cast array data from dtype('float64') to dtype('U32') according to the rule 'safe'

私は、これはデータがもはや整数であるとされていることを意味していないと考えていますフロートとして扱われる。

どうすれば解決できますか?ファイルをインポートしたときに、整数であることを確認するためにできることはありますか?フォーマットの2番目のオプションを追加しようとしたところの下の例を参照してください。

`from pyspark.sql import SparkSession 
spark = SparkSession.builder.getOrCreate() 
df = spark.read\ 
    .format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')\ 
    .option('header', 'true')\ 
    .option('format', 'int32')\ 
    .load(bmos.url('name', 'name.csv')) 
df.take(5)` 
+0

あなたの質問は私には不明らしいです。 投稿したコードスニペットの結果としてTypeErrorが表示されますか? – gadamcox

+0

spark csvコネクタのフォーマットではなく、.option( 'inferSchema'、 'true')を使用してスキーマを推論する必要があります。整数型を推論します。 –

+0

https://stackoverflow.com/users/9114719/emmajdawsこれであなたの質問が解決された場合は、それを回答できますか? – Raj

答えて

0

@ charles-gomesが正しいです。私のファイルtinyinttest.csvTestingSandboxと呼ばれるオブジェクトストアコンテナにある完全な例を次に示します。 tinyinttest.csvの 内容は次のとおりです。

name,val 
a,1 
b,2 

コード:

from pyspark.sql import SparkSession 
import ibmos2spark 

credentials = { 
    'auth_url': 'https://identity.open.softlayer.com', 
    'project_id': 'xxx', 
    'region': 'xxx', 
    'user_id': 'xxx', 
    'username': 'xxx', 
    'password': 'xxx' 
} 

configuration_name = 'xxx' 
bmos = ibmos2spark.bluemix(sc, credentials, configuration_name) 
spark = SparkSession.builder.getOrCreate() 

df = spark.read\ 
    .format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')\ 
    .option('header', 'true')\ 
    .option('inferSchema', 'true')\ 
    .load(bmos.url('TestingSandbox', 'tinyinttest.csv')) 

df.schema 

出力:

StructType(List(StructField(name,StringType,true),StructField(val,IntegerType,true))) 
+0

レスポンスありがとうhttps://stackoverflow.com/users/2683818/rajと私の遅い「答えられた」のためにお詫び申し上げます。これは整数に変更することによって機能しました。 また、SparkSession DataframeではなくPandas Dataframeとしてインポートすると、Linear Regression Classificationに問題がなく、全体として使いやすくなっていることがわかりました。 – emmajdaws

関連する問題