2017-06-13 14 views
-1

レコードはその後、私のScalaのコードでは、私は、各フィールドをフェッチする「の\ U0001」として使用区切り記号^ _のそれぞれのUnicodeはスカラーコードでどのように使用されますか?

val fileLoc   = "/user/cloudera/inputfiles/records.txt" 

val custAccountRDD = sc.textFile(fileLoc) 

val splitRDD  = custAccountRDD.map(elem => elem.split("\\u0001")) 

することができ^ Aによって区切られている場合、私は^ _

サンプルと同等の区切り文字は何か希望は、私は直接その下にしようとした入力レコード

4^_123123123^_Any Purchase^_ACTIVE^_1^_DATA^_Published 

私の質問は、私は区切り文字に基づいてこれらのレコードをどのように分割しないさ^ _

はなかったです役に立たない

val splitRDD  = custAccountRDD.map(elem => elem.split("^_")) 
+0

私はあなたが何を求めているのかよく分かりません。あなたは入力 '4^_123123123^_Any Purchase^_ACTIVE^_1^_DATA^_Published'に対してどんな出力をしたいのかをもっと具体的にすることができますか? '^ _'について:これは特殊文字か、単に文字列"^_ "ですか? –

+0

@Dat:^ _は入力ファイルの各レコードの区切り文字です。この区切り文字はUnit Separatorと呼ばれます。 –

答えて

0

これはあなたが探しているものですか?

scala> "4^_123123123^_Any Purchase^_ACTIVE^_1^_DATA^_Published".split("\\^\\_") 
res5: Array[String] = Array(4, 123123123, Any Purchase, ACTIVE, 1, DATA, Published) 
+0

はい。どうもありがとう 。しかし、引用符をエスケープしないで他の方法がありますか? "¥¥u0002"や "¥¥u0003"のようなものです..区切り記号の場合^ A "\\ u0001"は動作します.. –

+0

"\\ u"を使用すると、 "\\^A"を使用すると "\\ u0001"よりも読みやすくなります。とにかく "\\ u0001"のエスケープ引用符を使用していますか?ここでの問題は、あなたの文字列( '^'、 '_'、 '?'など)に特殊文字を入れていることで、これらの文字を正規表現の制御文字として扱うので、 'split()'は混乱します。正規表現をエスケープするために "\\"を使用するのは、実際には正しいことであり、 "\\ u0001"のような特殊文字列を出そうとするよりはるかに優れています。 –

+0

どうもありがとう 。^_には "\\^\\ _"を使用します –

関連する問題