/ / Converter pandas dataframe para RDD no zeppelin - python, apache-spark, apache-zeppelin

Converta pandas dataframe para RDD em zeppelin - python, apache-spark, apache-zeppelin

Eu sou novo para Zeppelin e eu há coisas que eu simplesmente não entendo.

Eu baixei uma tabela de um banco de dados com python,então, eu gostaria de convertê-lo em um RDD. Mas eu recebi o erro que a tabela não foi encontrada. Eu acho que há um problema em criar as tabelas criadas com outros intérpretes, mas eu realmente não sei ... Eu tentei com esta e esta pergunta, mas ainda não funciona, eles criam o df diretamente com faísca. Qualquer ajuda seria tão útil :)

 %python
engine = create_engine(
"mysql+mysqlconnector://...")
df = pd.read_sql(query, engine)

%spark
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

import sqlContext.implicits._
df=df.registerTempTable("df")

val df = sqlContext.sql("SELECT * from df LIMIT 5")
df.collect().foreach(println)

Respostas:

2 para resposta № 1

A conversão de um DataFrame do Pandas em um DataFrame do Spark é bastante direta:

%python
import pandas

pdf = pandas.DataFrame([[1, 2]]) # this is a dummy dataframe

# convert your pandas dataframe to a spark dataframe
df = sqlContext.createDataFrame(pdf)

# you can register the table to use it across interpreters
df.registerTempTable("df")

# you can get the underlying RDD without changing the interpreter
rdd = df.rdd

Para buscá-lo com scala spark você só precisa fazer o seguinte:

%spark
val df = sqlContext.sql("select * from df")
df.show()
// +---+---+
// |  0|  1|
// +---+---+
// |  1|  2|
// +---+---+

Você também pode obter o rdd subjacente:

val rdd = df.rdd