我在本地窗口上使用独立群集,并尝试使用以下代码从我们的服务器加载数据 -
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.load(source="jdbc", url="jdbc:postgresql://host/dbname", dbtable="schema.tablename")
Run Code Online (Sandbox Code Playgroud)
我已将SPARK_CLASSPATH设置为 -
os.environ['SPARK_CLASSPATH'] = "C:\Users\ACERNEW3\Desktop\Spark\spark-1.3.0-bin-hadoop2.4\postgresql-9.2-1002.jdbc3.jar"
Run Code Online (Sandbox Code Playgroud)
在执行sqlContext.load时,它会引发错误,提到"找不到适合jdbc:postgresql的驱动程序".我试过搜索网页,但无法找到解决方案.
我尝试不使用复制命令,因为它的数据库相当大。我正在使用 talend etl 开源工具,但尚未找到任何解决方案。
我试图在我的 Spark 应用程序中从 Postgresql 获取数据。但现在我很困惑如何在我的 docker 映像中安装 postgresql 驱动程序。我还尝试将 postgresql 安装为 apt-get install 命令,如下所述(Dockerfile)。
Dockerfile:
FROM python:3
ENV SPARK_VERSION 2.3.2
ENV SPARK_HADOOP_PROFILE 2.7
ENV SPARK_SRC_URL https://www.apache.org/dist/spark/spark-$SPARK_VERSION/spark-${SPARK_VERSION}-
bin-hadoop${SPARK_HADOOP_PROFILE}.tgz
ENV SPARK_HOME=/opt/spark
ENV PATH $PATH:$SPARK_HOME/bin
RUN wget ${SPARK_SRC_URL}
RUN tar -xzf spark-${SPARK_VERSION}-bin-hadoop${SPARK_HADOOP_PROFILE}.tgz
RUN mv spark-${SPARK_VERSION}-bin-hadoop${SPARK_HADOOP_PROFILE} /opt/spark
RUN rm -f spark-${SPARK_VERSION}-bin-hadoop${SPARK_HADOOP_PROFILE}.tgz
RUN apt-get update && \
apt-get install -y openjdk-8-jdk-headless \
postgresql && \
rm -rf /var/lib/apt/lists/*
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY my_script.py ./
CMD [ …Run Code Online (Sandbox Code Playgroud)