Я использую SparkR и хочу использовать команду substr()
, чтобы изолировать последний символ строки, которая содержится в столбце. Я могу substr()
работать, если я установил StartPosition и конечное положение к постоянному:Использование substr() в столбце DataFrame в SparkR
substr(sdfIris$Species, 8, 8)
Но когда я пытаюсь установить эти параметры, используя значение считанного из DataFrame:
sdfIris <- createDataFrame(sqlContext, iris)
sdfIris$Len <- length(sdfIris$Species)
sdfIris$Last <- substr(sdfIris$Species, sdfIris$Len, sdfIris$Len)
Ошибка в as.integer (начало - 1): не может заставить типа «S4» для вектора типа «целого»
кажется, что результат возвращается из sdfIris$Len
- это, возможно, однокамерный DataFrame, а для параметра требуется целое число.
Я попытался collect(sdfIris$Len)
, но:
Ошибка (функция (классы, FDEF, mtable): не удалось найти наследуемый метод для функции 'собирать' для подписания 'Колонка "'
Это кажется нелогичным. substr()
чудится sdfIris$Len
как DataFrame, но collect()
кажется, видит это как колонна.
Я уже определил работу-а round, используя registerTempTable
и используя SparkSQL для выделения последнего символа, но я надеялся избежать ненужных шагов перехода на SQL.
Как использовать SparkR substr()
в столбце DataFrame с динамическими параметрами запуска и завершения?
спасибо @ zero323! Это будет работать сейчас - по крайней мере, мне не нужно сначала регистрироватьTempTable(). Я попытаюсь спросить проект Spark, является ли моя потребность ошибкой или запросом функции. – SpiritusPrana
Запрос функции. Нет API-интерфейса DataFrame с динамическими смещениями на JVM, если он не может быть выставлен в R. – zero323
Еще раз спасибо! – SpiritusPrana