Azure Databricks Jupyter Notebook Python и R в одной ячейке - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть некоторый код (в основном, не мой исходный код), который я запускаю на своем локальном ПК в среде Anaconda Jupyter Notebook. Мне нужно увеличить объем обработки, поэтому я изучаю блоки данных Azure. Есть одна часть кода, которая выполняет цикл Python, но использует библиотеку R (stats), а затем передает данные через модель R (tbats). Таким образом, одна ячейка Jupyter Notebook работает с Python и R-кодом. Можно ли это сделать и в записных книжках Azure Databricks? Я нашел только документацию, которая позволяет менять языки от ячейки к ячейке.

В предыдущей ячейке у меня есть:

%r libarary(stats) 

Таким образом, статистика библиотеки импортируется (вместе с другими библиотеками R). Однако когда я запускаю код ниже, я получаю

NameError: имя 'stats' не определено

Мне интересно, если Databricks хочет, чтобы вы указали ячейке язык, который вы используете (например,% r,% python и т. Д.).

Мой код Python:

for customerid, dataForCustomer in original.groupby(by=['customer_id']):
    startYear = dataForCustomer.head(1).iloc[0].yr
    startMonth = dataForCustomer.head(1).iloc[0].mnth
    endYear = dataForCustomer.tail(1).iloc[0].yr
    endMonth = dataForCustomer.tail(1).iloc[0].mnth

    #Creating a time series object
    customerTS = stats.ts(dataForCustomer.usage.astype(int),
                      start=base.c(startYear,startMonth),
                      end=base.c(endYear, endMonth), 
                      frequency=12)
    r.assign('customerTS', customerTS)

    ##Here comes the R code piece
    try:
        seasonal = r('''
                    fit<-tbats(customerTS, seasonal.periods = 12, 
                                    use.parallel = TRUE)
                    fit$seasonal
                 ''')
    except: 
        seasonal = 1

    # APPEND DICTIONARY TO LIST (NOT DATA FRAME)
    df_list.append({'customer_id': customerid, 'seasonal': seasonal})
    print(f' {customerid} | {seasonal} ')

seasonal_output = pa.DataFrame(df_list)
...