Я пишу код для получения данных JSON из веб-API и в конечном итоге хочу поместить его в HBASE
таблицу, используя Phoenix
.
Исходный фрагмент кода, который я использую для получения данныхВеб-API возвращает мне данные в виде строки:
class Health() {
def getHealthData() {
val userRDD = df.select("ID", "PERMISSION_T", "UPDATE_T", "HEALTHTID").rdd;
val newData = userRDD.map(
(
row => {
{
var ID = row(0).toString // User ID
var permT = row(1).toString // access token
var rT = row(2).toString // refresh token
var healthID = row(3).toString // fitbit user id
var forDate = "2018-12-04"
val hUrl = s "web api url"
try {
--Piece of code to connect to web api-- --
hJsonStr = heartHandler.handleResponse(heartResponse).trim
println(s "=============In TRY(Print hJsonStr) ============$hJsonStr")
}
heartClient.getConnectionManager().shutdown();
} catch {
case unauthorized:
Exception => {
println(s "Unknown exception: $hUrl")
RecoverToken()
}
}
def RecoverToken(): Unit = {
println("<<<<<<<<<< Recover Token >>>>>>>>>")
val recoverUrl = "recover url"
}
//heartJson
//heartJsonStr
"ID:" + ID + s "--$hUrl -- $hJsonStr -- " //+ accessToken //+ "--" + activitiesJsonStr
};
}
)
);
newData.collect.foreach {
println
}
val fb = new Fitbit(); // initialize new fitbit object
fb.getFitBitData(); // call function to fetch data
Теперь я хочу преобразовать эту строку со встроенными значениями JSON в соответствующий объект JSON, чтобы я мог поместить его в HBASE
.Мне нужно сделать это с помощью Spark, Scala на Zappelin.
Ниже приведены примеры данных, которые я получаю из веб-API с помощью приведенного выше кода:
ID: XYZ1 - веб-адрес -{ "деятельность-сердце": [{ "DATETIME": "2018-12-18", "значение": { "customHeartRateZones": [], "heartRateZones": [{ "caloriesOut": 714,31496, "макс": 88, "min": 30, "minutes": 667, "name": "Out of Range"}, {"caloriesOut": 240.01076, "max": 123, "min": 88, "minutes": 66, "name ":" Fat Burn "}, {" caloriesOut ": 0," max ": 150," min ": 123," minutes ": 4," name ":" Cardio "}, {" caloriesOut ": 0,"max": 220, "min": 150, "minutes": 0, "name": "Peak"}], "restHeartRate": 62}}]} - ID: XYZ2 - веб-адрес - -
Я попытался импортировать несколько библиотек JSON
и использовал приведенный ниже код, но это не удалось из-за синтаксических ошибок:
import org.json4s.jackson.JsonMethods._
val parsed = parse(newData).asInstanceOf[JObject]
parse(newData).asInstanceOf[JObject]