Skip to content

Instantly share code, notes, and snippets.

View satendrakumar's full-sized avatar
:octocat:

Satendra Kumar satendrakumar

:octocat:
View GitHub Profile
@satendrakumar
satendrakumar / KafkaProducerAndConsumer.scala
Created May 9, 2017 04:19
Read & Write data from kafka.
//Producer
import java.util.Properties
import java.util.concurrent.Future
import org.apache.kafka.clients.producer.{ProducerRecord, RecordMetadata}
import org.apache.kafka.common.serialization.StringSerializer
@satendrakumar
satendrakumar / ParquetReadWrite.scala
Last active May 8, 2017 10:50
Read/write data to/from Parquet.
import org.apache.spark.sql.{DataFrame, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}
case class Demo(id: Int, name: String, info: Map[String, String], inner: Inner)
case class Inner(firstName: String)
object ParquetReadWrite extends App {
import javax.inject.Inject
import com.google.inject._
import scala.collection.JavaConversions._
object DemoApp extends App {
@satendrakumar
satendrakumar / Retry.scala
Last active April 27, 2017 07:53
Retry option for failure scenarios
def withRetry[T](retryCount: Int)(t: => T): T =
try
t
catch {
case NonFatal(th) =>
th.printStackTrace()
if (retryCount >= 0) {
println("Retrying............... [remaining count: [${retryCount-1}`]")
@satendrakumar
satendrakumar / JsonFormatter.scala
Created April 26, 2017 18:10
Single line Play Json parser for reading json and writing json from case class
import play.api.libs.json._
object JsonFormatter {
implicit val residentReads = Json.reads[Resident]
}
case class Resident(name: String, age: Int, role: Option[String])
@satendrakumar
satendrakumar / application.conf
Last active April 27, 2017 08:06
Play default thread pool setting
akka {
actor {
default-dispatcher {
fork-join-executor {
parallelism-factor = 8
parallelism-min = 16
@satendrakumar
satendrakumar / DataFrameWithFileName.scala
Last active October 21, 2020 14:48
Add file name as Spark DataFrame column
import org.apache.spark.sql.functions._
import org.apache.spark.sql.SparkSession
object DataFrameWithFileNameApp extends App {
val spark: SparkSession =
SparkSession
.builder()
.appName("DataFrameApp")
.config("spark.master", "local[*]")
@satendrakumar
satendrakumar / logback.xml
Last active April 15, 2017 05:42
logback xml with rolling appender
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%highlight([%level]) - [%thread] - [%date] - [%logger] %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<prudent>true</prudent>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/etl-%d{yyyy-MM-dd}.log</fileNamePattern>
@satendrakumar
satendrakumar / CSVParser.scala
Last active May 13, 2017 11:12
Parse CSV using univocity parser
import com.univocity.parsers.csv.{CsvParser, CsvParserSettings}
class CSVParser(delimiter: Char = ',') {
private val parser = {
val settings = new CsvParserSettings
val format = settings.getFormat
format.setLineSeparator("\n")
format.setDelimiter(delimiter)
@satendrakumar
satendrakumar / Logging.scala
Last active April 15, 2017 04:36
Cleaner way to use Logback logger
import org.slf4j.{Logger, LoggerFactory}
trait Logging {
protected val logger: Logger = LoggerFactory.getLogger(this.getClass())
protected def debug(message: String): Unit = logger.debug(message)
protected def debug(message: String, exception: Throwable): Unit = logger.debug(message, exception)