2017-01-19 11 views
1

私はApache SparkとApache Kylinで作業しています。私はKylinの中にキューブを作成できるように、HDFSにcsvファイルを保存する必要があります。RDDからCSV JAVA

bookingDF.write().format("com.databricks.spark.csv").option("header", "true").save("hdfs://10.7.30.131:8020/tmp/hfile/e.csv"); 

が、私はいつもかなり長い。このようなエラーを取得していると私は思う:アイデアは、私はcsvファイルに取得し、私はこのようなCSVファイルに私のRDDを変換しようとしていたRDDを変換することですそれがために私が使用しているオブジェクトのフィールド日は次のとおりです。

17/01/19 14:50:24 ERROR Utils: Aborting taskscala.MatchError: Fri Dec 09 07:45:27 CET 2016 (of class java.util.Date) 
at org.apache.spark.sql.catalyst.CatalystTypeConverters$StructConverter.toCatalystImpl(CatalystTypeConverters.scala:255) 
at org.apache.spark.sql.catalyst.CatalystTypeConverters$StructConverter.toCatalystImpl(CatalystTypeConverters.scala:250) 
at org.apache.spark.sql.catalyst.CatalystTypeConverters$CatalystTypeConverter.toCatalyst(CatalystTypeConverters.scala:102)... 

私は私が使用しているJavaオブジェクトのコードを添付ダウンの下:

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Booking implements Serializable { 
private String bPk; 
private String type; 
private String transactionId; 
private Boolean revisit; 
private String device; 
@JsonProperty("serverTime") 
private Date time; 
private String trackingId; 
private String browserFamily; 
@JsonProperty("action") 
private String measure; 
private String userId; 

public String getUserId() { 
    return userId; 
} 

public void setUserId(String userId) { 
    this.userId = userId; 
} 

public String getMeasure() { 
    return measure; 
} 

public void setMeasure(String measure) { 
    this.measure = measure; 
} 

public String getBrowserFamily() { 
    return browserFamily; 
} 

public void setBrowserFamily(String browserFamily) { 
    this.browserFamily = browserFamily; 
} 

public void setTime(Date time) { 
    this.time = time; 
} 

public String getTrackingId() { 
    return trackingId; 
} 

public void setTrackingId(String trackingId) { 
    this.trackingId = trackingId; 
} 

public Date getTime() { 
    return time; 
} 
.... 

私はわからないんだけど何私は間違っている、私はtransfしようとしたorm java.util.date to java.sql.dateしかし、私はまだjava.sql.dateと同じエラーを取得しています。

+0

わかりやすい質問をする必要がありますが、どのような日付のオブジェクトタイプが欲しいですか? – EngineerExtraordinaire

+0

私はそれがjava.date.utilを受け入れないことを知ったので、私はタイムスタンプを使いました。あなたはそれをどうやって知ったのですか?私はラインエラーのために意味する??私は学んでいるので、それは必要な日付オブジェクトタイプを見ることができませんでした。 – Orbar

+0

はい私はラインエラーから知っていた。それはそれが一致しないと言いました、それはそれが何か特定のものを探していることを意味します。 – EngineerExtraordinaire

答えて

1

java.text.SimpleDateFormatをお試しいただけますか?

DATEFORMAT:spark-csvソースコードから

は 日付またはタイムスタンプを読み込むときに使用する日付形式を示す文字列を指定します。
カスタム日付形式は、 java.text.SimpleDateFormatの形式に従います。
これは、DateTypeと TimestampTypeの両方に適用されます。
デフォルトでは、それはNULLであり、 回と日付をjava.sql.Timestamp.valueOf()java.sql.Date.valueOf()で解析しようとしています。

+0

ありがとう@Yaron、私はそれがjava.date.utilを受け入れていないことを知らなかった、私はあなたの答えの方向に研究していた、私はタイムスタンプを使用し、今は働いています。 hdfsノードだと思います。私は他のポストでそれを書いて、私は常に実験的な同僚の助​​けを歓迎しています:) – Orbar

関連する問題