Última actualización: 25 Ene 2021
Las preguntas que se hacen en una entrevista de trabajo de desarrollador de big data o apache spark developer pueden caer en una de las siguientes categorías basadas en los componentes del ecosistema Spark.
Además, es clave mostrar experiencia en proyectos en lo siguiente –
|
Con la creciente demanda de la industria para procesar big data a un ritmo más rápido -Apache Spark está ganando un gran impulso cuando se trata de la adopción empresarial. Hadoop MapReduce apoyó bien la necesidad de procesar big data rápidamente, pero siempre hubo una necesidad entre los desarrolladores de aprender herramientas más flexibles para mantenerse al día con el mercado superior de conjuntos de big data de tamaño medio, para el procesamiento de datos en tiempo real en cuestión de segundos.
Para apoyar el impulso para el procesamiento de big data más rápido, hay una creciente demanda de desarrolladores de Apache Spark que pueden validar su experiencia en la aplicación de las mejores prácticas para Spark – para construir soluciones complejas de big data. En colaboración con y expertos de la industria de big data -hemos curado una lista de las 50 mejores preguntas y respuestas de la entrevista de Apache Spark que ayudarán a los estudiantes/profesionales a clavar una entrevista de desarrollador de big data y a cerrar el suministro de talento para los desarrolladores de Spark a través de varios segmentos de la industria.
Haga clic aquí para ver una lista de más de 50 soluciones de proyectos resueltos de Big Data y Machine Learning de principio a fin (código reutilizable + vídeos)
Empresas como Amazon, Shopify, Alibaba y eBay están adoptando Apache Spark para sus despliegues de big data- se espera que la demanda de desarrolladores de Spark crezca exponencialmente. Google Trends confirma un «crecimiento similar al del hockey» en la adopción de Spark por parte de las empresas y su conocimiento por parte de organizaciones de diversos sectores. Spark se está haciendo popular debido a su capacidad para manejar el flujo de eventos y procesar big data más rápido que Hadoop MapReduce. 2017 es el mejor momento para perfeccionar sus habilidades de Apache Spark y seguir una carrera fructífera como profesional de análisis de datos, científico de datos o desarrollador de big data.
Estos proyectos de Apache Spark le ayudarán a desarrollar habilidades que lo harán elegible para solicitar roles de trabajo de desarrollador de Spark.
Las 50 mejores preguntas y respuestas de la entrevista de Apache Spark
La preparación es muy importante para reducir la energía nerviosa en cualquier entrevista de trabajo de big data. Independientemente de la experiencia y las habilidades de big data que uno posea, todos los candidatos temen la entrevista de trabajo de big data cara a cara. Aunque no hay manera de predecir exactamente qué preguntas se harán en cualquier entrevista de trabajo de big data o de desarrollador de spark – estas preguntas y respuestas de la entrevista de Apache spark podrían ayudarle a prepararse para estas entrevistas mejor.
1) Comparar Spark vs Hadoop MapReduce
Criterios |
Hadoop MapReduce |
Apache Spark |
Memoria |
No aprovecha la memoria del clúster de Hadoop al máximo. | Ahorra datos en memoria con el uso de RDD’s. |
Uso del disco |
MapReduce está orientado al disco. | Spark cachea los datos en memoria y asegura una baja latencia. |
Procesamiento |
Sólo se soporta el procesamiento por lotes | Se soporta el procesamiento en tiempo real a través de spark streaming. |
Instalación |
Se vincula a Hadoop. | No se vincula a Hadoop. |
Simplicidad, Flexibilidad y Rendimiento son las principales ventajas de usar Spark sobre Hadoop.
- Spark es 100 veces más rápido que Hadoop para el procesamiento de big data ya que almacena los datos en memoria, colocándolos en Bases de Datos Distribuidas Resistentes (RDD).
- Spark es más fácil de programar ya que viene con un modo interactivo.
- Proporciona una recuperación completa utilizando el gráfico de linaje cuando algo va mal.
Referir Spark vs Hadoop
Haga clic aquí para ver 52+ soluciones de proyectos resueltos y reutilizables en Big Data – Spark
2) ¿Qué es Shark?
La mayoría de los usuarios de datos sólo saben SQL y no son buenos en programación. Shark es una herramienta, desarrollada para las personas que provienen de una base de datos – para acceder a las capacidades de Scala MLib a través de Hive como interfaz SQL. La herramienta Shark ayuda a los usuarios de datos a ejecutar Hive en Spark – ofreciendo compatibilidad con el metastore, las consultas y los datos de Hive.
3) Enumere algunos casos de uso en los que Spark supera a Hadoop en el procesamiento.
- Procesamiento de datos de sensores -La «computación en memoria» de Apache Spark funciona mejor aquí, ya que los datos se recuperan y combinan desde diferentes fuentes.
- Spark es preferible a Hadoop para la consulta de datos en tiempo real
- Procesamiento de flujos – Para el procesamiento de registros y la detección de fraudes en flujos en directo para alertas, Apache Spark es la mejor solución.
4) ¿Qué es un vector disperso?
Un vector disperso tiene dos matrices paralelas -una para los índices y otra para los valores. Estos vectores se utilizan para almacenar entradas no nulas para ahorrar espacio.
5) ¿Qué es RDD?
Los RDDs (Resilient Distributed Datasets) son una abstracción básica en Apache Spark que representa los datos que llegan al sistema en formato de objeto. Los RDDs se utilizan para cálculos en memoria en grandes clusters, de forma tolerante a fallos. Los RDDs son porciones de sólo lectura, colección de registros, que son –
- Inmutables – Los RDDs no pueden ser alterados.
- Resilientes – Si un nodo que sostiene la partición falla el otro nodo toma los datos.
Construir una cartera de proyectos Big Data trabajando en proyectos apache spark en tiempo real
6) Explicar sobre las transformaciones y acciones en el contexto de los RDDs.
Las transformaciones son funciones ejecutadas bajo demanda, para producir un nuevo RDD. Todas las transformaciones van seguidas de acciones. Algunos ejemplos de transformaciones incluyen map, filter y reduceByKey.
Las acciones son los resultados de los cálculos o transformaciones del RDD. Después de realizar una acción, los datos del RDD vuelven a la máquina local. Algunos ejemplos de acciones incluyen reducir, recoger, primero y tomar.
7) ¿Cuáles son los lenguajes soportados por Apache Spark para desarrollar aplicaciones de big data?
Scala, Java, Python, R y Clojure
8) ¿Se puede utilizar Spark para acceder y analizar datos almacenados en bases de datos Cassandra?
Sí, es posible si se utiliza Spark Cassandra Connector.
9) ¿Es posible ejecutar Apache Spark en Apache Mesos?
Sí, Apache Spark se puede ejecutar en los clústeres de hardware gestionados por Mesos.
10) Explica sobre los diferentes gestores de clúster en Apache Spark
Los 3 diferentes gestores de clústeres soportados en Apache Spark son:
- YARN
- Apache Mesos -Tiene ricas capacidades de programación de recursos y es muy adecuado para ejecutar Spark junto con otras aplicaciones. Es ventajoso cuando varios usuarios ejecutan shells interactivos, ya que reduce la asignación de la CPU entre los comandos.
- Despliegues de estandartes – Muy adecuado para los nuevos despliegues que sólo se ejecutan y son fáciles de configurar.
11) ¿Cómo se puede conectar Spark con Apache Mesos?
Para conectar Spark con Mesos-
- Configure el programa controlador de Spark para conectarse a Mesos. El paquete binario de Spark debe estar en una ubicación accesible por Mesos. (o)
- Instalar Apache Spark en la misma ubicación que la de Apache Mesos y configurar la propiedad ‘spark.mesos.executor.home’ para que apunte a la ubicación donde está instalado.
12) ¿Cómo se pueden minimizar las transferencias de datos cuando se trabaja con Spark?
Minimizar las transferencias de datos y evitar el barajado ayuda a escribir programas de Spark que se ejecutan de forma rápida y fiable. Las distintas formas en las que se pueden minimizar las transferencias de datos cuando se trabaja con Apache Spark son:
- Using Broadcast Variable- Broadcast variable mejora la eficiencia de las uniones entre RDDs pequeños y grandes.
- Usar Acumuladores- Los acumuladores ayudan a actualizar los valores de las variables en paralelo mientras se ejecutan.
- La forma más común es evitar las operaciones ByKey, repartición o cualquier otra operación que desencadene barajes.
13) ¿Por qué son necesarias las variables broadcast cuando se trabaja con Apache Spark?
Son variables de sólo lectura, presentes en la caché de memoria de cada máquina. Cuando se trabaja con Spark, el uso de variables de difusión elimina la necesidad de enviar copias de una variable para cada tarea, por lo que los datos pueden ser procesados más rápidamente. Las variables de difusión ayudan a almacenar una tabla de búsqueda dentro de la memoria que mejora la eficiencia de recuperación en comparación con una búsqueda RDD ().
14) ¿Es posible ejecutar Spark y Mesos junto con Hadoop?
Sí, es posible ejecutar Spark y Mesos con Hadoop lanzando cada uno de ellos como un servicio separado en las máquinas. Mesos actúa como un planificador unificado que asigna tareas a Spark o a Hadoop.
15) ¿Qué es el gráfico de linaje?
Los RDDs en Spark, dependen de uno o varios otros RDDs. La representación de las dependencias entre RDDs se conoce como el gráfico de linaje. La información del gráfico de linaje se utiliza para calcular cada RDD bajo demanda, de modo que siempre que se pierda una parte del RDD persistente, los datos que se pierden se pueden recuperar utilizando la información del gráfico de linaje.
16) ¿Cómo se pueden desencadenar las limpiezas automáticas en Spark para manejar los metadatos acumulados?
Se pueden desencadenar las limpiezas estableciendo el parámetro ‘spark.cleaner.ttl’ o dividiendo los trabajos de larga duración en diferentes lotes y escribiendo los resultados intermedios en el disco.
17) Explique sobre las principales bibliotecas que constituyen el Ecosistema Spark
- Spark MLib- Biblioteca de aprendizaje automático en Spark para algoritmos de aprendizaje comúnmente utilizados como clustering, regresión, clasificación, etc.
- Spark Streaming – Esta librería se utiliza para procesar datos de streaming en tiempo real.
- Spark GraphX – API de Spark para cálculos paralelos de gráficos con operadores básicos como joinVertices, subgraph, aggregateMessages, etc.
- Spark SQL – Ayuda a ejecutar consultas tipo SQL sobre datos de Spark utilizando herramientas estándar de visualización o BI.
18) ¿Cuáles son las ventajas de utilizar Spark con Apache Mesos?
Proporciona una partición escalable entre varias instancias de Spark y una partición dinámica entre Spark y otros frameworks de big data.
19) ¿Cuál es la importancia de la operación de Ventana Deslizante?
La Ventana Deslizante controla la transmisión de paquetes de datos entre varias redes informáticas. La librería Spark Streaming proporciona cómputos de ventana donde las transformaciones en los RDDs se aplican sobre una ventana deslizante de datos. Cada vez que la ventana se desliza, los RDDs que caen dentro de la ventana particular se combinan y operan para producir nuevos RDDs del DStream con ventana.
20) ¿Qué es un DStream?
El Stream Discretizado es una secuencia de Bases de Datos Distribuidas Resistentes que representan un flujo de datos. Los DStreams pueden ser creados desde varias fuentes como Apache Kafka, HDFS y Apache Flume. Los DStreams tienen dos operaciones –
- Transformaciones que producen un nuevo DStream.
- Operaciones de salida que escriben los datos en un sistema externo.
21) Cuando se ejecutan aplicaciones Spark, ¿es necesario instalar Spark en todos los nodos del clúster YARN?
No es necesario instalar Spark cuando se ejecuta un trabajo bajo YARN o Mesos porque Spark puede ejecutarse sobre los clústeres de YARN o Mesos sin afectar a ningún cambio en el clúster.
22) ¿Qué es Catalyst framework?
Catalyst framework es un nuevo marco de optimización presente en Spark SQL. Permite a Spark transformar automáticamente las consultas SQL añadiendo nuevas optimizaciones para construir un sistema de procesamiento más rápido.
23) Nombra algunas empresas que utilicen Apache Spark en producción.
Pinterest, Conviva, Shopify, Open Table
24) ¿Qué librería de Spark permite compartir archivos de forma fiable a la velocidad de la memoria en diferentes marcos de clúster?
Tachyon
¡Trabaja en interesantes proyectos de ciencia de datos utilizando Spark para construir un impresionante portafolio de proyectos!
25) ¿Por qué se utiliza BlinkDB?
BlinkDB es un motor de consulta para ejecutar consultas SQL interactivas en enormes volúmenes de datos y rinde resultados de consulta marcados con barras de error significativas. BlinkDB ayuda a los usuarios a equilibrar la «precisión de las consultas» con el tiempo de respuesta.
26) ¿Cómo puede comparar Hadoop y Spark en términos de facilidad de uso?
Hadoop MapReduce requiere programar en Java, lo cual es difícil, aunque Pig y Hive lo hacen considerablemente más fácil. Aprender la sintaxis de Pig y Hive lleva tiempo. Spark tiene APIs interactivas para diferentes lenguajes como Java, Python o Scala y también incluye Shark, es decir, Spark SQL para los amantes del SQL, lo que lo hace comparativamente más fácil de usar que Hadoop.
27) ¿Cuáles son los errores más comunes que cometen los desarrolladores al ejecutar aplicaciones de Spark?
Los desarrolladores suelen cometer el error de-
- Ejecutar el servicio web varias veces utilizando múltiples clusters.
- Ejecutar todo en el nodo local en lugar de distribuirlo.
Los desarrolladores deben tener cuidado con esto, ya que Spark hace uso de la memoria para el procesamiento.
28) ¿Cuál es la ventaja de un archivo Parquet?
El archivo Parquet es un archivo con formato de columnas que ayuda a –
- Limitar las operaciones de E/S
- Consumir menos espacio
- Buscar sólo las columnas necesarias.
29) ¿Cuáles son las distintas fuentes de datos disponibles en SparkSQL?
- Fichero Parquet
- JSON Datasets
- Tablas Hive
30) ¿Cómo utiliza Spark Hadoop?
Spark tiene su propio cálculo de gestión de clústeres y utiliza principalmente Hadoop para el almacenamiento.
Para la lista completa de proyectos resueltos de Big Data – PULSE AQUÍ
31) ¿Cuáles son las características clave de Apache Spark que le gustan?
- Spark proporciona opciones analíticas avanzadas como algoritmos de grafos, machine learning, streaming de datos, etc
- Tiene APIs incorporadas en múltiples lenguajes como Java, Scala, Python y R
- Tiene buenas ganancias de rendimiento, ya que ayuda a ejecutar una aplicación en el cluster Hadoop diez veces más rápido en disco y 100 veces más rápido en memoria.
32) ¿Qué entiendes por Pair RDD?
Se pueden realizar operaciones especiales sobre RDDs en Spark utilizando pares clave/valor y dichos RDDs se denominan Pair RDDs. Los Pair RDDs permiten a los usuarios acceder a cada clave en paralelo. Tienen un método reduceByKey () que recoge los datos basados en cada clave y un método join () que combina diferentes RDDs juntos, basados en los elementos que tienen la misma clave.
33) ¿Cuál elegirías para un proyecto -Hadoop MapReduce o Apache Spark?
La respuesta a esta pregunta depende del escenario del proyecto dado – ya que se sabe que Spark hace uso de la memoria en lugar de la red y la E/S de disco. Sin embargo, Spark utiliza una gran cantidad de RAM y requiere una máquina dedicada para producir resultados efectivos. Así que la decisión de utilizar Hadoop o Spark varía dinámicamente con los requisitos del proyecto y el presupuesto de la organización.
34) Explique sobre los diferentes tipos de transformaciones en DStreams?
- Transformaciones sin estado- El procesamiento del lote no depende de la salida del lote anterior. Ejemplos – map (), reduceByKey (), filter ().
- Transformaciones Stateful- El procesamiento del lote depende de los resultados intermedios del lote anterior. Ejemplos -Transformaciones que dependen de ventanas deslizantes.
35) Explique sobre los casos de uso populares de Apache Spark
Apache Spark se utiliza principalmente para
- Aprendizaje automático iterativo.
- Analítica y procesamiento de datos interactivos.
- Procesamiento de flujos
- Procesamiento de datos de sensores
36) ¿Es Apache Spark una buena opción para el aprendizaje por refuerzo?
No. Apache Spark funciona bien sólo para algoritmos simples de aprendizaje automático como clustering, regresión, clasificación.
37) ¿Qué es Spark Core?
Tiene todas las funcionalidades básicas de Spark, como – gestión de memoria, recuperación de fallos, interacción con sistemas de almacenamiento, programación de tareas, etc.
38) ¿Cómo puedes eliminar los elementos con una clave presente en cualquier otro RDD?
Usa la función subtractByKey ()
39) ¿Cuál es la diferencia entre persist() y cache()
persist () permite al usuario especificar el nivel de almacenamiento mientras que cache () utiliza el nivel de almacenamiento por defecto.
40) ¿Cuáles son los distintos niveles de persistencia en Apache Spark?
Apache Spark persiste automáticamente los datos intermedios de varias operaciones de barajado, sin embargo se suele sugerir a los usuarios que llamen al método persist () sobre el RDD en caso de que planeen reutilizarlo. Spark tiene varios niveles de persistencia para almacenar los RDDs en disco o en memoria o como una combinación de ambos con diferentes niveles de replicación.
Los distintos niveles de almacenamiento/persistencia en Spark son –
- MEMORY_ONLY
- MEMORY_ONLY_SER
- MEMORY_AND_DISK
- MEMORY_AND_DISK_SER, DISK_ONLY
- OFF_HEAP
41) ¿Cómo maneja Spark la monitorización y el registro en modo Standalone?
Spark tiene una interfaz de usuario basada en la web para supervisar el clúster en modo autónomo que muestra las estadísticas del clúster y de los trabajos. La salida del registro de cada trabajo se escribe en el directorio de trabajo de los nodos esclavos.
42) ¿Proporciona Apache Spark check pointing?
Los gráficos de linaje siempre son útiles para recuperar RDDs de un fallo, pero esto suele llevar mucho tiempo si los RDDs tienen largas cadenas de linaje. Spark tiene una API para la comprobación de la señalización, es decir, una bandera REPLICATE para persistir. Sin embargo, la decisión sobre qué datos comprobar – es decidida por el usuario. Los puntos de control son útiles cuando los gráficos de linaje son largos y tienen amplias dependencias.
43) ¿Cómo se pueden lanzar trabajos de Spark dentro de Hadoop MapReduce?
Usando SIMR (Spark in MapReduce) los usuarios pueden ejecutar cualquier trabajo de Spark dentro de MapReduce sin requerir ningún derecho de administrador.
44) ¿Cómo utiliza Spark Akka?
Spark utiliza Akka básicamente para la programación. Todos los trabajadores solicitan una tarea al maestro después de registrarse. El maestro sólo asigna la tarea. Aquí Spark utiliza Akka para la mensajería entre los trabajadores y los maestros.
45) ¿Cómo se puede lograr una alta disponibilidad en Apache Spark?
- Implementando la recuperación de un solo nodo con el sistema de archivos local
- Usando StandBy Masters con Apache ZooKeeper.
46) Hadoop utiliza la replicación para lograr la tolerancia a fallos. ¿Cómo se consigue esto en Apache Spark?
El modelo de almacenamiento de datos en Apache Spark se basa en RDDs. Los RDDs ayudan a lograr la tolerancia a fallos a través del linaje. Los RDD siempre tienen la información de cómo construir a partir de otros conjuntos de datos. Si alguna partición de un RDD se pierde debido a un fallo, el linaje ayuda a construir sólo esa partición perdida en particular.
47) Explique sobre los componentes centrales de una aplicación Spark distribuida.
- Driver- El proceso que ejecuta el método main () del programa para crear RDDs y realizar transformaciones y acciones sobre ellos.
- Executor -Los procesos de los trabajadores que ejecutan las tareas individuales de un trabajo de Spark.
- Cluster Manager-Un componente enchufable en Spark, para lanzar Executores y Drivers. El gestor de clústeres permite que Spark se ejecute sobre otros gestores externos como Apache Mesos o YARN.
48) ¿Qué entiende por evaluación perezosa?
Spark es intelectual en la forma en que opera sobre los datos. Cuando le dices a Spark que opere sobre un determinado conjunto de datos, atiende a las instrucciones y toma nota de ello, para que no se le olvide – pero no hace nada, a menos que se le pida el resultado final. Cuando se llama a una transformación como map () en un RDD, la operación no se realiza inmediatamente. Las transformaciones en Spark no se evalúan hasta que se realiza una acción. Esto ayuda a optimizar el flujo de trabajo general de procesamiento de datos.
49) Definir un nodo trabajador.
Un nodo que puede ejecutar el código de la aplicación Spark en un clúster puede ser llamado como nodo trabajador. Un nodo worker puede tener más de un worker que se configura estableciendo la propiedad SPARK_ WORKER_INSTANCES en el archivo spark-env.sh. Sólo se inicia un trabajador si la propiedad SPARK_ WORKER_INSTANCES no está definida.
50) ¿Qué entiende por SchemaRDD?
Un RDD que consiste en objetos de fila (envoltorios alrededor de arrays básicos de cadenas o enteros) con información de esquema sobre el tipo de datos en cada columna.
51) ¿Cuáles son las desventajas de usar Apache Spark sobre Hadoop MapReduce?
Apache Spark no escala bien para trabajos intensivos de computación y consume un gran número de recursos del sistema. La capacidad en memoria de Apache Spark a veces es un obstáculo importante para el procesamiento rentable de big data. Además, Spark tiene su propio sistema de gestión de archivos y, por lo tanto, debe integrarse con otras plataformas de datos basadas en la nube o con apache hadoop.
52) ¿Es necesario instalar Spark en todos los nodos de un clúster YARN mientras se ejecuta Apache Spark en YARN?
No, no es necesario porque Apache Spark se ejecuta sobre YARN.
53) ¿Qué entiendes por Memoria del Ejecutor en una aplicación Spark?
Cada aplicación Spark tiene el mismo tamaño de heap y número de núcleos fijos para un ejecutor Spark. El tamaño de la pila es lo que se conoce como la memoria del ejecutor de Spark que se controla con la propiedad spark.executor.memory de la bandera -executor-memory. Cada aplicación Spark tendrá un ejecutor en cada nodo trabajador. La memoria del ejecutor es básicamente una medida de cuánta memoria del nodo trabajador utilizará la aplicación.
54) ¿Qué hace el motor de Spark?
El motor de Spark programa, distribuye y supervisa la aplicación de datos en todo el clúster de Spark.
55) ¿Qué hace que Apache Spark sea bueno en las cargas de trabajo de baja latencia como el procesamiento de gráficos y el aprendizaje automático?
Apache Spark almacena los datos en memoria para una construcción y entrenamiento más rápidos del modelo. Los algoritmos de aprendizaje automático requieren múltiples iteraciones para generar un modelo óptimo resultante y, del mismo modo, los algoritmos de gráficos recorren todos los nodos y aristas.Estas cargas de trabajo de baja latencia que necesitan múltiples iteraciones pueden conducir a un mayor rendimiento. Un menor acceso al disco y un tráfico de red controlado suponen una gran diferencia cuando hay muchos datos que procesar.
56) ¿Es necesario iniciar Hadoop para ejecutar cualquier aplicación Apache Spark?
Iniciar Hadoop no es obligatorio para ejecutar cualquier aplicación Spark. Como no hay almacenamiento separado en Apache Spark, utiliza Hadoop HDFS pero no es obligatorio. Los datos pueden ser almacenados en el sistema de archivos local, pueden ser cargados desde el sistema de archivos local y procesados.
57) ¿Cuál es el nivel de paralelismo por defecto en apache spark?
Si el usuario no especifica explícitamente entonces el número de particiones se consideran como nivel de paralelismo por defecto en Apache Spark.
58) Explique sobre el flujo de trabajo común de un programa Spark
- El paso más importante en un programa Spark implica la creación de RDD’s de entrada a partir de datos externos.
- Utilizar varias transformaciones de RDD como filter() para crear nuevos RDD transformados basados en la lógica de negocio.
- persistir() cualquier RDD intermedio que pueda tener que ser reutilizado en el futuro.
- Lanzar varias acciones de RDD() como first(), count() para comenzar el cómputo paralelo , que luego será optimizado y ejecutado por Spark.
59) En un programa de Spark dado, ¿cómo identificar si una operación dada es Transformación o Acción?
Uno puede identificar la operación basada en el tipo de retorno –
i) La operación es una acción, si el tipo de retorno es otro que el RDD.
ii) La operación es transformación, si el tipo de retorno es igual al RDD.
60) ¿Cuál es, según usted, un error común que cometen los desarrolladores de apache spark al utilizar spark?
- Mantener el tamaño requerido de los bloques de barrido.
- Los desarrolladores de spark suelen cometer errores con la gestión de los grafos acíclicos dirigidos (DAG’s.)
61) Supongamos que hay un RDD llamado ProjectPrordd que contiene una enorme lista de números. El siguiente código spark está escrito para calcular el promedio –
def ProjectProAvg(x, y):
retorna (x+y)/2.0;
avg = ProjectPrordd.reduce(ProjectProAvg);
¿Qué hay de malo en el código anterior y cómo lo corregirías?
La función de promedio no es conmutativa ni asociativa. La mejor manera de calcular el promedio es primero sumarlo y luego dividirlo por el conteo como se muestra a continuación –
def sum(x, y):
return x+y;
total =ProjectPrordd.reduce(sum);
avg = total / ProjectPrordd.count();
Sin embargo, el código anterior podría conducir a un desbordamiento si el total se hace grande. Por lo tanto, la mejor manera de calcular el promedio es dividir cada número por el conteo y luego sumar como se muestra a continuación –
cnt = ProjectPrordd.count();
def divideByCnt(x):
return x/cnt;
myrdd1 = ProjectPrordd.map(divideByCnt);
avg = ProjectPrordd.reduce(sum);
Q. Digamos que tengo una enorme lista de números en un archivo en HDFS. Cada línea tiene un número.Y quiero com
Preguntas de la entrevista de Spark SQL
1) Explique la diferencia entre Spark SQL y Hive.
- Spark SQL es más rápido que Hive.
- Cualquier consulta de Hive se puede ejecutar fácilmente en Spark SQL pero viceversa no es cierto.
- Spark SQL es una librería mientras que Hive es un framework.
- No es obligatorio crear un metastore en Spark SQL pero sí es obligatorio crear un metastore en Hive.
- Spark SQL infiere automáticamente el esquema mientras que en Hive el esquema necesita ser declarado explícitamente..
Preguntas de la entrevista sobre Spark Streaming
1) Nombra algunas fuentes desde las que el componente de streaming de Spark puede procesar datos en tiempo real.
Apache Flume, Apache Kafka, Amazon Kinesis
2) Nombra algunas empresas que ya están utilizando Spark Streaming.
Uber, Netflix, Pinterest.
3) ¿Cuál es la capa inferior de abstracción en la API de Spark Streaming?
DStream.
4) ¿Qué entiendes por receptores en Spark Streaming?
Los receptores son entidades especiales en Spark Streaming que consumen datos de varias fuentes de datos y los trasladan a Apache Spark. Los receptores suelen ser creados por contextos de streaming como tareas de larga ejecución en varios ejecutores y programados para operar de manera round robin con cada receptor tomando un solo núcleo.
Invitamos a la comunidad de big data a compartir las preguntas y respuestas más frecuentes de la entrevista de Apache Spark, en los comentarios a continuación – para facilitar las entrevistas de trabajo de big data para todos los futuros profesionales de la analítica.
5) ¿Cómo calculará el número de ejecutores necesarios para hacer el procesamiento en tiempo real utilizando Apache Spark? ¿Qué factores hay que tener en cuenta para decidir el número de nodos para el procesamiento en tiempo real?
El número de nodos se puede decidir mediante la evaluación comparativa del hardware y teniendo en cuenta múltiples factores como el rendimiento óptimo (velocidad de la red), el uso de la memoria, los marcos de ejecución que se utilizan (YARN, Standalone o Mesos) y teniendo en cuenta los otros trabajos que se están ejecutando dentro de esos marcos de ejecución junto con spark.
6) ¿Cuál es la diferencia entre Spark Transform en DStream y map?
La función map en spark streaming permite a los desarrolladores utilizar las transformaciones de Apache Spark en los RDD’s subyacentes para el stream.La función map en hadoop se utiliza para una transformación de elemento a elemento y se puede implementar utilizando transform.Idealmente , map trabaja en los elementos del Dstream y transform permite a los desarrolladores trabajar con los RDD’s del DStream.map es una transformación elemental mientras que transform es una transformación RDD.
Check Out Top Scala Interview Questions for Spark Developers.