Как применить regexp_replace с символами юникода в искровом улье - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь посчитать количество вхождений смайликов в строке в кадре искры.Я использую SQLTransformer.Мое утверждение:

select LENGTH(regexp_replace(text, '[^\\uD83C-\\uDBFF\\uDC00-\\uDFFF]+', '')) as count_emoji from __THIS__

Но это утверждение не работает.

Что я делаю не так?

1 Ответ

0 голосов
/ 01 апреля 2019

Похоже, ваш SQLTransform работает. Пожалуйста, найдите код, как показано ниже.

object SparkHiveExample extends App {

  val spark = SparkSession
    .builder()
    .master("local")
    .appName("Spark Hive Example")
    .getOrCreate()

  import spark.implicits._

  //Prepare Test Data
  val df = Seq("hello, how are you?\uD83D\uDE0A\uD83D\uDE0A\uD83D\uDE0A")
    .toDF("text")

  df.show(false)

+-------------------------+
|text                     |
+-------------------------+
|hello, how are you????|
+-------------------------+

  df.createOrReplaceTempView("__THIS__")

  val finalDf = spark.sql("select LENGTH(regexp_replace(text,'[^\\\\uD83C-\\\\uDBFF\\\\uDC00-\\\\uDFFF]+', '')) as count_emoji from __THIS__")

  finalDf.show(false)

+-----------+
|count_emoji|
+-----------+
|3          |
+-----------+

}

Если вы хотите прочитать данные из таблицы Hive, то создайте экземпляр SparkSession с HiveSupport и настройкой Hive, поместив hive-site.xml, core-site.xml (для настройки безопасности) и hdfs. -site.xml (для конфигурации HDFS) в файле conf /.

// warehouseLocation points to the default location for managed databases and tables
val warehouseLocation = new File("spark-warehouse").getAbsolutePath

val spark = SparkSession
  .builder()
  .appName("Spark Hive Example")
  .config("spark.sql.warehouse.dir", warehouseLocation)
  .enableHiveSupport()
  .getOrCreate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...